1.子组件向父组件通信:父组件根据需要写好函数,传给子组件回调。
父组件中:写好函数,并将函数重命名后传给子组件
toggleFinish(itemId) {
do some thing...
}
render() {
return <Son items={this.state.list} toggleFinish={this.someHandel} />
}
子组件中:通过this.props接收父组件传来的函数,注意上下文绑定和函数中的参数
render() {
return (
this.props.items.map((v, i) => {
<ul>
<li onClick={this.props.toggleFinish.bind(this. v.id)}></li>
</ul>
})
)
}
2.获取别的dom元素下的value或者属性:不要试图操作dom,这样很不优雅。应该将别的元素的值或属性通过this.setState()存在state下,然后再通过this.state获取。
3.修改state中的array的object的某项属性:先改掉第i项的属性,再调用setState()才能更新改动
state = {
list: []
}
function xx() {
let list = this.state.list
list.map((v, i) => {
if (v.id === itemId) {
v.name = 'lord'
this.setState(preState => ({
list: list
}))
}
})
}