【问题标题】:React Native navigation from redux action来自 redux 操作的 React Native 导航
【发布时间】:2020-07-18 13:56:02
【问题描述】:

我有这个问题。在我的 React Native 应用程序中,用户登录后,他从服务器收到消息,通知他他在应用程序中的角色(教师、学生),并根据该角色呈现不同的 UI。问题是我的登录操作是通过 Redux 分派的(并且我正在从响应中保存一些东西到 redux),我想根据该服务器答案导航到不同的屏幕,但我无法从 redux 操作创建者导航。我尝试了官方文档https://reactnavigation.org/docs/navigating-without-navigation-prop/ 的解决方案,但我不断收到此错误:“导航”对象尚未初始化。有没有其他方法可以在服务器响应之后根据 redux 操作进行导航?谢谢! 我的行动:

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 不起作用。有人可以帮帮我吗?

【问题讨论】:

    标签: react-native redux react-navigation


    【解决方案1】:

    从 redux 操作中导航并不是最好的方法。

    我建议如下:

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

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

    添加 componentDidMount 函数并检查用户的角色并导航到您想要的屏幕!

    【讨论】:

    • 我面临着类似的情况,您能否详细说明为什么不建议从 redux 操作中导航?另外,你能给出任何示例代码吗?
    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2016-07-14
    • 2018-08-30
    • 2022-01-02
    • 2017-10-12
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多