Reactjs 反应导航验证流问题:警告:Can';t在未安装的组件上执行React状态更新
我正在我的react本机应用程序中使用react导航。 我还将Redux用作状态管理 我有一个导航组件,它从redux商店检查用户,并定义Reactjs 反应导航验证流问题:警告:Can';t在未安装的组件上执行React状态更新,reactjs,react-native,redux,react-navigation,Reactjs,React Native,Redux,React Navigation,我正在我的react本机应用程序中使用react导航。 我还将Redux用作状态管理 我有一个导航组件,它从redux商店检查用户,并定义导航 export const AppNavigator = ({auth}) => { const defineNavigator = () => { if (isClientUser(auth)) return <ClientNavigator />; if (isSellerUser(auth)) return
导航
export const AppNavigator = ({auth}) => {
const defineNavigator = () => {
if (isClientUser(auth)) return <ClientNavigator />;
if (isSellerUser(auth)) return <SellerNavigator />;
return <AuthNavigator />;
};
return <NavigationContainer>{defineNavigator()}</NavigationContainer>;
};
const mapStateToProps = (state) => ({
auth: state.auth,
});
export default connect(mapStateToProps, {})(AppNavigator);
我尝试使用useffect
hook解决问题,如前所述:
但是没有帮助
我认为AppNavigator
as中的问题是侦听auth
状态。
对这个问题有什么建议吗?那么
userService
为您做了什么?如果用户对导航器进行身份验证,则该导航器将被调出,submit
中的任何后续“操作”/“状态更新”都与此无关。@drewrese谢谢您的回复。userService向服务器发出http请求(使用axios),向服务器发送数据。它会回报你的承诺,你需要等待吗?我想更多的是我的问题。如果用户成功通过身份验证(但用户界面已经更新,因此此操作失败),并且(可能)身份验证失败的错误和auth
状态没有改变(并交换导航器),那么它所做的似乎就是将加载设为false?如果userService.getAuthUser()
是应用程序的auth
状态的一部分,则需要重新考虑登录流程。@drewrese您能提供一些示例或模式吗?
const submit = () => {
form.sms_code = filterValidationCode(code);
setLoading(true);
userService
.register(form)
.then((data) => {
dispatch(login(data));
userService
.getAuthUser()
.then((data) => dispatch(fetchAuthUser(data)))
.catch((err) => setApiError(responseErrFromAPI(err)))
.finally(() => setLoading(false));
})
.catch((err) => {
if (
err.response &&
err.response.data &&
err.response.data.error === BAD_USERNAME_ERROR
) {
setApiError(i18n.t('errors.phone_exists'));
} else {
setApiError(responseErrFromAPI(err));
}
})
.finally(() => setLoading(false));
};