React Study Note7
props
props是组件之间传递数据的最主要api, react推崇的是自顶向下的数据流向,也就是组件的数据要从父组件传给子组件。如果子组件需要向父组件传递数据,则需要使用回调函数的方式。
import * as React from ‘react’
class Child extends React.Component {
render() {
return (<div>
{this.props.parentName}
</div>)
}
}
class Parent extends React.Component {
state = {
name: '小明'
}
render() {
setTimeout(() => this.setState({name: '小明儿子'}), 5000)
return (<div>
<Child parentName={this.state.name}/>
</div>)
}
}
可以看到Child组件显示了父组件的name。当父组件状态更新了,子组件同步更新。那如何在子组件中更改父组件状态呢?答案是回调函数。
import * as React from ‘react’
class Child extends React.Component {
update() {
this.props.onChange('小明名字改了')
}
render() {
return (<div>
{this.props.parentName}
<button onClick={this.update.bind(this)}>更新</button>
</div>)
}
}
class Parent extends React.Component {
state = {
name: '小明'
}
changeName(name) {
this.setState({
name
})
}
render() {
setTimeout(() => this.setState({name: '小明儿子'}), 5000)
return (<div>
<Child onChange={this.changeName.bind(this)} parentName={this.state.name}/>
</div>)
}
}
注意props是不可以更改的,这既不符合react单向数据流思想,也为维护带来灾难。