在下面的代码中,当我点击"添加行"时,为什么调用方法handleColumnAdded
?按钮?
我只想从Line
组件中访问我的组件的方法。
addLine(){
var lineArray = this.state.lines;
var line = {id:(lineArray.length+1),text:'hello'};
lineArray.push(line);
this.setState({
lines : lineArray
});
}
handleColumnAdded(){
console.log("handleColumnAdded");
}
render() {
var me = this;
var lines = this.state.lines.map(function(line) {
return (
<Line key={line.id} data={line} onColumnAdded={me.handleColumnAdded()}/>
);
});
return (
<div>
<div>
{lines}
</div>
<button onClick={this.addLine.bind(this)}>Add line</button>
</div>
);
}
答案 0 :(得分:0)
更改此行
<Line key={line.id} data={line} onColumnAdded={me.handleColumnAdded()}/>
到这个
<Line key={line.id} data={line} onColumnAdded={me.handleColumnAdded}/>
原因:
onColumnAdded
需要一个函数,但是当你包含()
时,你正在调用该函数。当你这样做时,函数会立即被调用,而不是以多事的方式被调用。