ReactJS访问"这个"在回调中

时间:2017-02-13 12:53:47

标签: reactjs this

在回调中,我希望将道具传递给某个组件,但由于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>

感谢任何帮助, 感谢。

2 个答案:

答案 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 = () = {...}