从redux动作反应本机导航

时间:2020-04-06 14:21:33

标签: react-native redux react-navigation

我有这个问题。用户登录后,在我的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简单行不通。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

从redux动作进行导航不是最好的方法。

我建议以下内容:

添加具有属性角色的User Reducer,这是来自后端(老师或学生)的响应

添加加载屏幕(登录后应用程序的初始根目录),并使用mapStateToProps将其连接到用户状态

添加componentDidMount函数并检查用户角色,然后导航到所需的屏幕!