在回调中,我希望将道具传递给某个组件,但由于this.props
this
未定义,因此无法通过var MyComponent = React.createClass({
options:{
componentFunction: function(c) {
console.log(this.props.myProp); //this references to the options here, not the component itself
}
},
render: function() {
return (
<OtherComponent options={ this.options } />
);
}
});
。
这是一个简化的例子:
<MyComponent myProp={"x"};
我以这种方式传递道具:
<data android:host="example.com" android:scheme="http" ></data>
感谢任何帮助, 感谢。
答案 0 :(得分:4)
问题是componentFunction
有自己的范围。您需要绑定它,您可以通过将以下方法添加到MyComponent
:
componentWillMount: function() {
this.options.componentFunction = this.options.componentFunction.bind(this);
}
更新:如果您正在使用ES6课程,则上述代码应该放在构造函数中。
但是,使用箭头函数可能更好,它不定义自己的范围,因此将从父范围继承this
。
options:{
componentFunction: () => console.log(this.props.myProp)
}
答案 1 :(得分:2)
使用this.options.bind(this)
代替this.options
访问该功能内的this
。
或使用ES6语法 - options = () = {...}
。