組件通信
一、React組件通訊:
1.父傳子
2.子傳父
3.兄弟之間
第一種:父傳子
第一步:在父組件(App.js)引入子組件(tab.js)
例如:import TabCom from './pages/tab'
第二步:在父組件向子組件傳遞數(shù)據(jù)
例如:<TabCom info={ { num:2400,title:'1603A-ok' } } ></TabCom>
第三步:子組件如何接收父組件的數(shù)據(jù) (主要通過 this.props.屬性名實現(xiàn))
例如:
let {num,title}=this.props.info
console.log('父組件num的值為:',num);
console.log('父組件title的值為:',title);
第二種:子傳父
// Vue實現(xiàn)的子傳父 this.$emit('派發(fā)的自定義事件',要傳遞給父組件的數(shù)據(jù))
//React還是通過this.props來實現(xiàn)的,具體是通過傳遞一個回調(diào)函數(shù)實現(xiàn)
第一步:在父組件(App.js)引入子組件(tab.js)
例如:import TabCom from './pages/tab'
第二步:在父組件向子組件傳遞一個回調(diào)函數(shù) 例如:sendValue() {....}
例如:
<TabCom
send={ this.sendValue.bind(this)}
>
</TabCom>
第三步:子組件如何接收父組件的函數(shù)(主要通過 this.props.回調(diào)函數(shù)名實現(xiàn))
例如:
this.props.send(要傳遞給父組件的值)
第三種:兄弟之間(也稱非父子)
1.通過公共組件作為橋梁,來實現(xiàn)兄弟通訊
2.通過Redux來實現(xiàn)
ReactDOM.render(<Main />,要插入的位置);
1.如何定義父子通訊的默認屬性:defaultProps={ }
組件內(nèi)定義
static defaultProps={
默認屬性:值
}
組件外定義:
組件名.defaultProps={
默認屬性:值
}
2. 函數(shù)式組件肯定是無狀態(tài)組件躏敢,類組件可以是無狀態(tài)組件也可以是有狀態(tài)組件
生命周期:镇草??厕诡?党远?
props和state的區(qū)別:
state:(對內(nèi))針對組件內(nèi)部的狀態(tài)艾恼,組件外外部是訪問不到的
props:(對外)是組件之間訪問時用到的,組件內(nèi)部可以通過props來訪問到另一個組件的數(shù)據(jù)
原則:多用props,少用state