我在哪里可以在React Native登录视图中监听登录状态?

时间:2019-06-02 23:23:47

标签: react-native

我编写了一个登录组件,该组件运行良好,但无法确定登录成功后移至登录页面的正确方法。

我知道它会以某种方式涉及:

if (this.props.user) {
      this.props.navigation.navigate("Main");
      // I'm using react-native-navigation. But any implementation of "now go to the home page" would go here.
    }

我尝试将其放在我的render方法的顶部,该方法可以工作,但是却收到错误/警告(调试控制台中的错误,模拟器中的警告),并说“警告:无法更新在现有状态转换过程中(例如在render中)。渲染方法应仅是props和state的函数。”

说得通。但是我无法想到放置它的实际位置。

PS,我尝试过此操作,但它根本不起作用(导航不会发生)


  shouldComponentUpdate() {
    if (this.props.user) {
      this.props.navigation.navigate("Main");
      return false;
    }
    return true;
  }

1 个答案:

答案 0 :(得分:2)

您的最后一种方法几乎是正确的

  shouldComponentUpdate() {
    if (this.props.user) {
      this.props.navigation.navigate("Main");
      return false;
    }
    return true;
  }

但是,您正在使用this.props,这是更新之前的旧道具。新的props作为方法的第一个参数传递。在这种特殊情况下,还建议在 shouldComponentUpdate 上使用 componentWillReceiveProps ,因为引入了 shouldComponentUpdate 以防止组件更新。

所以,这会变成这样:

  componentWillReceiveProps(newProps) {
    if (newProps.user) {
      this.props.navigation.navigate("Main");
    }
  }