這種方式不用關(guān)系到是父子組件 非父子組件
其實(shí)對應(yīng)的就是reactjs的全局事件? react native使用全局事件不需要引入其他的庫? react native自帶DeviceEventEmitter模塊
用法:
import {
DeviceEventEmitter
} from 'react-native';
發(fā)送? 在你業(yè)務(wù)邏輯的代碼里面寫上 DeviceEventEmitter.emit('showTab',{active:true});
接收 ?componentDidMount(){
this.listener?=?RCTDeviceEventEmitter.addListener('通知名稱',(value)=>{
//?接受到通知后的處理
});
}
componentWillUnmount(){
//?移除?一定要寫
this.listener.remove();
}
另外context使用上下文可以讓子組件直接訪問祖先的數(shù)據(jù)或函數(shù)袜腥,無需從祖先組件一層層地傳遞數(shù)據(jù)到子組件中见擦。
讓子組件拿到父親組件的數(shù)據(jù)
varMyContainer = React.createClass({
getInitialState:function(){return{
curItem:'item1'}
},
childContextTypes: {
curItem: React.PropTypes.any,
changeItem: React.PropTypes.any
},
getChildContext:function(){return{
curItem:this.state.curItem,
changeItem:this.changeItem
}
},
changeItem:function(item){this.setState({
curItem: item
});
},
render:function(){return(
)
}
});