我正在尝试创建一个条件HomeScreen,如果用户将“UserID”保存到手机,它应该将它们带到“PlacesScreen”,否则让它加载“LoginScreen”。我正在使用RedN的StackNavigation,大约两周时间学习反应原生。
function nav (state = firstState(), action) {
let nextState;
switch (action.type) {
case 'Home':
nextState = AppNavigator.router.getStateForAction(
NavigationActions.navigate({routeName: 'Home'}),
state
);
return nextState;
break;
case NavActionTypes.NAVIGATE_PLACES:
nextState = AppNavigator.router.getStateForAction(
NavigationActions.navigate({ routeName: 'Places' }),
state
);
return nextState;
break;
}
...等 我想将reducer中的初始状态设置为依赖于天气,或者不在手机上保存ID。我非常新的反应原生和编码一般,即时通讯19,所以任何帮助将不胜感激!如果您需要更多代码来帮助,请告诉我,我将发送github链接。 先感谢您! 库珀
答案 0 :(得分:1)
由于redux建议保持Reducer纯净,我会将导航逻辑从reducer中删除并将其放入组件中。 另外,我建议在组件安装期间检查LoginScreen上的状态,如果状态包含UserID,则将导航状态重置为PlacesScreen。
e.g。
import store from '../storeLocation'
export class LoginScreen extends React.Component {
...
componentWillMount(){
if(store.getState().userID !== "")
this.props.navigation.dispatch(NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'Places'})
]
}));
}
...
}