我在我的父TodoList
组件中有这个:
state = {
checkedIds: []
}
_handleSelectedTodo = (e) => {
e.preventDefault();
this.setState({checkedIds: [...this.state.checkedIds, e.value]});
}
将_handleSelectedTodo
作为道具传递给Todo
组件,如此
<Todo
key={edge.node.id}
todo={edge.node}
viewer={this.props.viewer}
handleSelectedTodo={this._handleSelectedTodo}
/>
以下是我的Todo
组件的代码:
<li>
<input
checked={this.props.todo.complete}
className="toggle"
onChange={this.props.handleSelectedTodo.bind(null)}
type="checkbox"
value={this.props.todo.id}
/>
{this.props.todo.text+' - '+this.props.todo.complete}
我想将此处的值传递给父e.target.value
,但我无法成功更改TodoList
父checkedIds
的状态。帮助
答案 0 :(得分:1)
首先它应该是e.target.value
而不是e.value
_handleSelectedTodo = (e) => {
// here add your logic for update the completed flag depending on the value of the id
this.setState({checkedIds: [...this.state.checkedIds, e.target.value]});
}
传递回调是没有绑定的(因为你已经在todoList中使用了箭头函数)
<input
checked={this.props.todo.complete}
className="toggle"
onChange={this.props.handleSelectedTodo}
type="checkbox"
value={this.props.todo.id}
/>
另外,我认为你仍然需要处理取消选中复选框(从数组中删除)
答案 1 :(得分:0)
子
<input type="text" onChange={event => this.props.onInputChange(event.target.value)}/>
父
onInputChange(filter){
console.log(filter)
}
<child onInputChange ={this.onInputChange.bind(this)}/>