我想知道基于react-native
事件在redux-saga
屏幕(使用web-socket
)之间导航的最佳实践是什么。
我的应用使用Web套接字(socket.io
)发出和接收事件。
对于某些事件,我想更改屏幕。
例如,对于即将到来的score
事件,我希望应用程序导航到scoreboard
屏幕。
function subscribe (socket) {
return eventChannel(emit => {
socket.on('score', () => {
emit(MyActions.receiveScore())
})
return () => {}
})
}
我可以在reducer中做这样的事情:
// reducer.js
const myReducer = (state) =>
merge(state, { screen: 'ScoreboardScreen' })
然后在根组件中导航:
// rootScreen.js
onComponentDidUpdated() {
this.props.navigation.navigate(this.props.screen)
}
但是我不喜欢我的状态包含一个可以处理屏幕的变量的想法。
而且,我可以感觉到一旦组件由于screen
以外的其他原因而更新,将会出现很多错误。
如何基于socket
的事件处理此屏幕导航?