【发布时间】:2017-07-16 22:43:33
【问题描述】:
当我尝试执行以下代码时,函数renderContents 中this 的值是undefined。
我原以为胖箭头函数会自动绑定 this。不是这样吗?如果没有,我如何确保this 被传递给函数renderContents?
代码示例:
class Box extends React.Component {
renderContents = () => {
console.log(this); // undefined
return (
<div></div>
)
}
render() {
const {
someValue,
} = this.props;
return (
<div>
{someValue ? this.renderContents() : null}
</div>
);
}
}
【问题讨论】:
-
您的代码对我来说似乎很好。你确定这个例子足以重现你所描述的吗?
-
够了。有人回答告诉我不要使用箭头功能,但现在答案已经消失了。我放弃了箭头函数语法,一切都像那样工作。
-
不是这样。使用方法绝对是一种应该也工作的替代方法,但你的代码也应该没有任何问题,如所示会使其无法工作。
-
这是一个 JSFiddle,您的代码按原样运行:jsfiddle.net/bvpe4j39/150
-
只是箭头函数。箭头函数没有上下文,这意味着没有专门附加的“this”。
...An arrow function does not create its own this, the this value of the enclosing execution context is used...- developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript reactjs ecmascript-6 ecmascript-next