gpt4 book ai didi

javascript - 在用户注册时以 React-native 方式重新启动应用程序

转载 作者:行者123 更新时间:2023-12-03 01:25:14 26 4
gpt4 key购买 nike

我有一个 react native 应用程序,其顶级 App.js 如下:

const AuthStack = createStackNavigator(

{ Landing, SignUpWithGoogle },

{
initialRouteName : 'Landing'
, navigationOptions : {
header : null
}
}
);


const AppStack = createStackNavigator(

{
AppContainer
, Campaign
, Compose
},

{
initialRouteName : 'AppContainer'
, navigationOptions : {
header : null
}
}
);


/**
@TODO:
force app to reload on user creation ...

there needs to be a state transition on user creation
... not sure how to
*/
class App extends React.Component {

render () {

const stack = (!this.props.authenticating && this.props.user)
? <AppStack {...this.props} />
: <AuthStack />


return (
<Loader
isLoaded = { !this.props.authenticating && this.props.feedIsLoaded}
imageSource = {logo}
backgroundStyle = {loading.loadingBackgroundStyle}
>
{stack}
</Loader>
)

}
}

有一个来自https://github.com/TheSavior/react-native-mask-loaderLoader组件用启动页面隐藏应用程序,直到应用程序获取用户身份验证数据或确定这是新用户。这非常有效,除非用户第一次注册,然后应用程序会直接跳转到身份验证模式,并且无法加载我想要为新用户提供的初始数据。解决这个问题的唯一办法就是重新启动应用程序,这是行不通的。有没有办法更好地在 AuthStack 和 AppStack 之间转换,以便我想要的注册信息都在那里?一种方法是强制重新加载应用程序,以便我们返回到Loader屏幕和状态,但目前尚不清楚如何做到这一点。

最佳答案

我为我的用例做了类似的事情。

const Routes =  {
Login: {
screen: Login
},
Status: {
screen: Status,
navigationOptions: {
gesturesEnabled: false, // To prevent swipeback
},
},
...
};

const LoggedRootStack = createStackNavigator(
{
...Routes
},
{
initialRouteName: 'Status'
}
)

const RootStack = createStackNavigator(
{
...Routes
},
{
initialRouteName: 'Login'
}
)

要传递 Prop ,请使用 Redux为了保持全局状态。您可以将组件连接到 redux 状态以访问 props。希望这有帮助

关于javascript - 在用户注册时以 React-native 方式重新启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51585723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com