我有这个问题。用户登录后,在我的React Native App中,他从服务器收到消息,通知他有关他在应用程序中的角色(教师,学生),并根据该角色呈现不同的UI。事情是我的登录操作是通过Redux分派的(并且我保存了一些响应到Redux的内容),我想根据该服务器的答案导航到不同的屏幕,但是我无法从Redux操作创建者导航。我尝试使用官方文档https://reactnavigation.org/docs/navigating-without-navigation-prop/的解决方案,但始终收到此错误:“导航”对象尚未初始化。根据redux动作从服务器BUT响应后,还有其他导航方法吗?谢谢! 我的动作:
export const loginmyapp = (email, password) => {
return async dispatch => {
const response = await fetch(
'http://147.175.121.250:80/authenticate/login',
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: email,
password: password
})
}
);
if (!response.ok) {
const errorResData = await response.json();
console.log(errorResData);
const errorId = errorResData.error.message;
let message = 'Something went wrong!';
if (errorId === 'EMAIL_NOT_FOUND') {
message = 'Entered email not found!';
} else if (errorId === 'INVALID_PASSWORD') {
message = 'Entered password is not valid!';
}
throw new Error(message);
}
const resData = await response.json();
console.log(resData);
dispatch({
type: LOGINMYAPP,
token: resData.jwtToken,
relationId: resData.relationIDd,
info: resData.info
});
RootNavigation.navigate('SignedInZiak');
};
};
我知道我将在这里处理ifchecks的响应,但是这个.navigate简单行不通。有人可以帮我吗?
答案 0 :(得分:1)
从redux动作进行导航不是最好的方法。
我建议以下内容:
添加具有属性角色的User Reducer,这是来自后端(老师或学生)的响应
添加加载屏幕(登录后应用程序的初始根目录),并使用mapStateToProps将其连接到用户状态
添加componentDidMount函数并检查用户角色,然后导航到所需的屏幕!