家长无法提供反应状态吗?

时间:2018-06-25 14:28:16

标签: reactjs react-native

我有一个带有子组件的表格,该表格呈现为表格。

ParentComponent extends React {

state = {
      anArray: []
}

<ParentComponent> 
   <table>
    map ( thing => <ChildComponent {someFunction= this.updateFunction;} />

ChildComponent将数据映射到单个TD时。在ChildComponent的onChange中,我正在调用

 onChange = this.props.someFunction(); 

并且代码达到了我的断点,这很棒。它在ParentComponent中调用someFunction。在someFunction中,我试图访问父对象的状态,以便可以将onChanged TD与数组中的正确索引进行匹配,但我无法定义。

someFunction(id) {
  const index = this.state.anArray.findIndex( x => x.id === id) ;
  if (index === -1)
    // handle error
     console.log("DIDN'T FIND ID: " + id);
  });
}

为什么我不能从ChildComponent访问函数调用的状态?我希望能够访问它。

1 个答案:

答案 0 :(得分:0)

从发布的代码中尚不清楚,但是我想您尚未绑定someFunction,并且具有子级的上下文,而不是父级的上下文。

ParentComponent extends React {

  constructor(props){
     super(props)
     this.someFunction = this.someFunction.bind(this)
  }

  someFunction(){
    ...
  }

  render(){
      ...
  }

}

如果您有必要的babel插件,您甚至可以

ParentComponent extends React {

  someFunction = () => {
    ...
  }

  render(){
      ...
  }

}