【发布时间】:2016-03-16 18:29:58
【问题描述】:
假设我有两个子组件,登录和个人资料。登录默认通过 Navigator 呈现
<Navigator initialRoute={{name: 'login'}} renderScene={this.renderScene} />
这是我的 renderScene 方法
renderScene(route) {
switch (route) {
case 'login':
return <Login / >;
case 'profile':
return <Profile / >;
}
}
因此,当有人通过 Login 登录时,状态会更新,并且所有内容(包含 Navigator 的主应用程序容器)都会重新呈现。那么,我应该在何时何地将 Profile 路由真正推送到导航器?
我是否根据 renderScene 方法中的状态更改初始路由?
还是在重新渲染后推送新路由?
或者我应该使用 shouldComponentUpdate 而不是重新渲染而是将新路由推送到导航,具体取决于状态。
【问题讨论】:
-
您需要使用更多代码示例更新您的问题。通常你会在
<Navigator/>组件的onClick 处理程序中执行此操作。当用户点击链接时调用动作创建者dispatch(changeRoute('login'));或当用户登录dispatch(login('user', 'pass'));。 -
谢谢 Mike,我在调度动作或读取状态方面完全没有问题。我的问题是关于根据状态更改导航器的 initialRoute 。这个initialRoute最初是Login,所以Navigator渲染了Login页面,但是在我登录并传入新状态后,这将重新渲染Navigator,在这里我尝试将initialRoute更改为其他内容,而我的函数确实显示了更改,renderScene 方法仍然读取 Login。我也尝试使用 InitialRouteStack 并拼接出 Login 但仍然是相同的结果。
-
请添加更多代码;还不足以找出问题所在。听起来您需要
connect()一个组件来访问mapStateToProps中的状态以获取初始路由。 -
我的问题不在于 redux 或其架构,我已经连接。我会尝试用更多代码更新我的问题
标签: reactjs react-native redux navigator