react-native - React Native - 向堆栈导航添加逻辑
问题描述
我有以下堆栈导航:
const WelcomeStack = createStackNavigator({
UpdateProfileScreen: {
screen: UpdateProfileScreen,
},
SelectProfileScreen: {
screen: SelectProfileScreen,
},
PresentationModal: {
screen: PresentationModal,
}
}, {
initialRouteName: 'UpdateProfileScreen',
headerMode: 'none'
})
当用户是新用户时,我首先显示“UpdateProfileScreen”,然后转到“SelectProfileSecreen”,然后是“PresentationModal”。
如果在“UpdateProfileScreen”用户关闭应用程序后出于某种原因,下次他们登录时,我将显示“SelectProfileSecreen”和“PresentationModal”。如果他们完成数据,下一次,他们将只看到“PresentationModal”
由于我已将“UpdateProfileScreen”设置为 initialRoute,因此它将始终首先加载,即使它没有显示。
所以我想知道是否可以通过编程方式更改 initialRoute 和/或是否可以:
this.props.navigation.navigate("WelcomeStack")
我可以在同一个堆栈中添加一些逻辑来处理要显示的页面吗?
解决方案
我在这里遇到了类似的问题,我是如何解决的:SwitchNavigator
像这样添加:
let Navigation = createSwitchNavigator(
{
AuthLoading: AuthLoading,
LoginNavigator: LoginNavigator,
HomeNavTab: tabNavigator,
LoggedInChose: LoggedInChose
},
{
initialRouteName: "AuthLoading"
}
);
堆栈是第AuthLoading
一个加载并决定应用程序下一步去哪里的:
import React from "react";
import { connect } from "react-redux";
class AuthLoading extends React.Component {
constructor(props) {
super(props);
this.checkUserSession();
}
checkUserSession = () => {
const userData = this.props.userData;
if (userData) {
const residencesNumber = userData.nbreResidences;
if (residencesNumber == 1) {
this.props.navigation.navigate("HomeNavTab");
} else {
this.props.navigation.navigate("LoggedInChose");
}
} else {
this.props.navigation.navigate("LoginNavigator");
}
};
// Render any loading content that you like here
render() {
return (
null
);
}
}
const mapStateToProps = state => {
return {
userData: state.userData
};
};
export default connect(mapStateToProps)(AuthLoading);
也许你会从中得到一个想法。
推荐阅读
- list - 在列表中的元素之间添加零?
- python - 在 Linux Mint 中使用启动器和基本代码启动 Jupyter Notebook
- windows - 如何诊断“随机”winsock 故障
- javascript - 使用异步数据调用值的 Google Chart DataView 计算列
- ios - iOS 通用链接:我是否必须发布我的应用才能测试通用链接?
- java - 使用 glide 从服务器加载图像
- reactjs - 为什么 useEffect 不能在 window.location.pathname 更改时运行?
- postgresql - Postgres 使用 Bitmap Index Scan 而不是普通的 Index Scan
- ansible-template - 使用 regex_search 从标准输出注册变量
- node.js - Mongoose (MongoDB) - 关系不会停止删除