2017-04-08 74 views
0

这是父元素:阵营his.setState不是一个函数

changedData(){ 
    this.setState({ 
     changed: true 
    }).bind(this) 
    } 

我把它传递给孩子:

<AboutMe changedData={this.changedData} auth={this.props.auth} profile={profile}/> 

孩子:

dataChanged(data) { 
      this.props.changedData();  
     console.log("dataChanged!!") 

    } 

回答

1

制作在调用函数之前,确定你绑定了this。 你可以改变你的changedData函数签名的ES6箭头功能这样自动将其绑定:

changedData =() => { 
} 

,或者你可以在子组件像这样绑定它:

<AboutMe 
    changedData={this.changedData.bind(this)} 
    auth={this.props.auth} 
    profile={profile}/> 
+1

或者你可以绑定它在构造函数中,这比第二个建议更可取(因为内联绑定将在每个渲染上创建一个新的绑定函数)。 –

+0

我对reactjs并没有太多的工作,所以我最终只需要使用箭头函数进行绑定。与构造函数@RobM中的绑定相比,使用它来绑定有什么不利之处? –

+1

AFAIK箭头方法声明只是在构造函数中绑定的语法糖,不共享内联绑定的缺点 –

相关问题