React Native

时间:2017-05-24 18:31:41

标签: javascript reactjs react-native async-await

警告信息显示:

"警告:只能更新已安装或安装的组件。这通常意味着您在已卸载的组件上调用了setState,replaceState或forceUpdate。这是一个无操作。"

代码导致了它:

async componentDidMount() {
  const token = await AsyncStorage.getItem('google_token');

  if (token) {
    this.props.navigation.navigate('feed');
    this.setState({ token });
  } else {
    this.setState({ token: false });
  }
 }

在谷歌之后,如果我担心这个警告,我真的很困惑。如何在不禁用此Github issue建议的规则的情况下收到警告消息?

1 个答案:

答案 0 :(得分:7)

我认为问题在于您正在导航到“Feed'然后更新此组件的状态。最好先更新状态,然后在完成后导航:

async componentDidMount() {
  const token = await AsyncStorage.getItem('google_token');

  if (token) {
    this.setState({ token }, () => this.props.navigation.navigate('feed'));
  } else {
    this.setState({ token: false });
  }
 }