我有一个抽屉导航器,每个抽屉入口都是一个堆栈导航器。 基本上我想做的就是在两个抽屉条目中使用相同的堆栈导航器,但是将一个道具传递给它,这样它就可以做不同的事情了。
我使用redux,因此导航操作会通过我的Navigation Reducer功能。我试图做的是在抽屉导航时将navigation.state.params设置为什么。我的导航减速器中的默认情况很简单:
default:
if (action.routeName == "MyProposalNavigator")
{
console.log("navRed MyProposalNavigator");
var routeWithParams= {
routeName: 'MyProposalNavigator',
params: { listtype: MY_PROPOSALS}
};
const navigateAction = NavigationActions.navigate(routeWithParams);
nextState = AppNavigator.router.getStateForAction(
navigateAction,
state
);
} else {
// all other "type":"Navigation/NAVIGATE"
nextState = AppNavigator.router.getStateForAction(action, state);
}
break;
所以在MyProposalNavigator(StackNavigator)中 - 初始路由是ProposalList。在ProposalList中,当我查找navigation.state.params时,它是未定义的。我怀疑params没有从StackNavigator传递到ProposalList(屏幕)。
我用' params'使用了相同的方法。在另一个导航动作,它工作正常。
我注意到我的导航缩减器没有为initialRoute(ProposalList)获取导航动作 - 所以我无法修改该动作的状态 - 这是我怀疑我实际上必须做的。
所以我的问题是:如果导航动作没有通过我的导航缩减器,如何在StackNavigator的initialRoute上设置navigation.state.params?