gpt4 book ai didi

javascript - AWS 放大 : onStatusChange then render main page

转载 作者:行者123 更新时间:2023-12-01 02:28:52 26 4
gpt4 key购买 nike

当身份验证状态发生更改时,我尝试渲染应用程序的主入口点,但是当我尝试转到应用程序的主入口点时,我得到一个空白屏幕。我假设如果渲染函数本身没有调用它,我就无法进入主页?如果是这样,当我建立登录时如何呈现应用程序的主页?

index.js

class App extends Component {

/*
constructor(props) {
super(props);
this.state = {
authState: null,
authData: null
}
}
*/
handleAuthStateChange(state) {
alert(state)
if (state === 'signedIn') {
alert('here');
return ( // go To Entry point of app
<ApolloProvider store={store} client={client}>
<AppWithNavigationState/>
</ApolloProvider>
);
}
}

render() {
//const { authState, authData } = this.state;
// const signedIn = (authState === 'signedIn');


return (
<Authenticator hideDefault={true} onStateChange={this.handleAuthStateChange}>
<Login/>
</Authenticator>

);
}

}
export default App = codePush(App);

登录.js

export default class Login extends Component {


render() {

const { authState, onStateChange } = this.props;

if (!['signIn', 'signedOut', 'signedUp'].includes(authState)) {
alert('login')
return null;
}


return (<View style={styles.container}>

<View style={styles.backgroundContainer}>
<Image source={images.icons.LoginImage} style={styles.backgroundImage} />
</View>
<View style={styles.overlay}>
<Button iconLeft light rounded style={styles.facebookLoginButton}>
<Icon style={styles.facebookIcon} name='logo-facebook' />
<Text style={styles.facebookButtonText}>Login with Facebook</Text>
</Button>
<Button rounded bordered light style={styles.loginLaterButton}
onPress={() => onStateChange('signedIn')}>
<Text style={styles.buttonText}>Sign In Test</Text>
</Button>


</View>

</View>

);
}
}

最佳答案

如果您解决了这个问题,我希望它对其他人有帮助。

我认为以下是比使用“onAuthStateChange”更好的选择:

来自Amplify dox :

import { Auth } from 'aws-amplify';

Auth.currentAuthenticatedUser({
bypassCache: false // Optional, By default is false. If set to true, this call will send a request to Cognito to get the latest user data
}).then(user => console.log(user))
.catch(err => console.log(err));

您可以在“.then(user => ...”中添加逻辑,以添加到 protected 页面的路由。您还可以从“.catch(err => ”)重定向到登录页面。

如果您将上述代码包含在函数中并从“componentWillReceiveProps”调用它,则每次身份验证状态更改时都应该调用它。

关于javascript - AWS 放大 : onStatusChange then render main page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478494/

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