【发布时间】:2018-03-10 18:27:55
【问题描述】:
使用最新的 React Navigation v1.5.0,我的路线不会触发屏幕更改。
我已将 Redux 集成到我的设置中,详见 react-navigation-redux docs。我在这里看到的最大变化是“addListener”设置,尽管我不确定这是阻止屏幕变化的原因。我的路线使用 v.1.0 运行良好。
我在调试器中看到导航操作被触发并且屏幕被添加到导航状态,但屏幕没有改变。
单击下面的按钮会调度操作,但屏幕不会更改为“关于”屏幕并停留在主屏幕上。
RootNav
StackNavigator
- Home
- About
Index.js
const middleware = createReactNavigationReduxMiddleware(
"root",
state => state.navigationState,
)
const addListener = createReduxBoundAddListener("root");
class App extends Component {
render () {
return (
<View>
<RootNav navigation={addNavigationHelpers({
dispatch: this.props.dispatch,
state: this.props.navigationState,
addListener,
})} />
</View>
)
}
}
按钮
<TouchableHighlight onPress={ () =>
this.props.dispatch(NavigationActions.navigate({
routeName: 'About'
})) }>
<Text>About</Text>
</TouchableHighlight>
点击按钮后的状态:
nav: {
key: StackRouterRoot,
index: 1,
isTransitioning: true,
routes: [
0: {routeName: 'Home'},
1: {routeName: 'About'},
],
}
您如何正确调度路线/屏幕更改?
【问题讨论】:
标签: react-native redux react-redux react-navigation