React Native中的componentDidMount()警告中的异步SetState

tmv*_*nty 3 javascript async-await reactjs react-native

警告信息说:

"警告:只能更新已安装或安装的组件.这通常意味着您在未安装的组件上调用了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 });
  }
 }
Run Code Online (Sandbox Code Playgroud)

经过一些谷歌,我真的很困惑,如果我应该担心这个警告.如何在不禁用此Github问题建议的规则的情况下获取警告消息?

Mat*_*Aft 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 });
  }
 }
Run Code Online (Sandbox Code Playgroud)