2017-05-24 104 views
3

警告消息說:異步SETSTATE)警告在陣營本土

「警告:只能更新一安裝或安裝組件這通常意味着你叫的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建議的規則的情況下獲取警告消息?

回答

6

我認爲問題在於您正在導航到'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 }); 
    } 
}