1.react資料流以及組件間溝通
react是自上而下的單向資料流,從父節點傳遞到子節點(通過props);如果頂層的props改變,react會重新渲染所有子節點。
props:用於組件間狀態的傳遞,用於整個組件樹中傳遞資料和配置,在當前組件訪問props使用this.props;
state 指的是組件內部的狀態,只能從當前組件調用this.setState修改state值,一般更新子組件都是通過改變state值,更新新子組件的props值而得到更新。
組件溝通 父子組件溝通
父組件傳遞資料給子組件
通過傳遞props即可實現。
class Parent extends React.Component{ constructor(props){ super(props); this.state = { msg: 'haha' } } componentDidMount(){ setTimeout(() => { this.setState({ msg: 'xixi' }) },1000) } render(){ return ( <Child msg = {this.state.msg} /> ); }}class Child extends React.Component { constructor(props) { super(props); } render(){ return <div>{this.props.msg}</div> }}
如果父組件個子組件之間不止一個層級,那麼通過 …將父組件的資訊傳遞給更深層級的子組件。 子組件傳遞資料給父組件
子組件向父組件通訊同樣需要用props,父組件傳遞一個函數給子組件,子組件調用函數。
class Parent extends React.Component{ constructor(props){ super(props); this.state = { msg: 'haha' } } passMsg(msg){ this.setState({ msg: msg }) } render(){ return <Child passMsg = {msg => this.passMsg(msg)}/> }}class Child extends React.Component{ constructor(props) { super(props) } componentDidMount(){ setTimeout(() => { this.props.passMsg('xixi') },1000) } render(){ return <div>子組件向父組件通訊</div> }}
使用箭頭函數 將父組件的passMsg通過props傳遞給子組件,主要是箭頭函數保證了子組件調用函數的時候,函數內部的this仍然指向父組件。 對於兄弟組件之間的通訊
他們擁有共同的父組件,所以1先向父組件通訊,父組件再向2通訊,從而實現1和2之間的通訊