我在我的项目中使用react.js,我有像这样的组件层次结构。
RootComponent
|- Child1
| |- itemA1
| |- itemA2
| - ...
- Child2
|- itemB1
|- itemB2
_ ...
我拥有RootComponent中的所有状态,即:
我想通过点击一个项来更改当前选择的项目,所以我在RootComponent中创建了一个属性:
changeCurrentItemA: function(item) {
console.log("check, if the function was called");
//do something with state
}
我将其传递给Child1
:
<Child1 items={this.state.data.itemsA} changeCurrentItemA={this.changeCurrentItemA} />
在儿童组合中,我从道具中获取功能:
var changeCurrentItemA = this.props.changeCurrentItemA;
我希望像这样呈现:
<li onClick={changeCurrentItemA(item)} />
此howerver会立即评估该函数,因此在渲染过程中,当我单击它时,它会被评估n次并且没有任何反应。
如何在用户点击后传递给变量item
的运行函数做出反应。
我在这里看到了类似的问题:React.js how to pass callbacks to child components? 但那里的功能没有争议。
编辑:
它与bind
的问题不重复,因为反应劫持默认bind
行为只允许绑定组件。