繁体   English   中英

无法在ComponentDidMount中获取数据

[英]Fetch data in ComponentDidMount not working

我正在尝试在componentDidMount中获取数据,设置状态并更改路由,但无法完成(仅在单击屏幕后)。 我猜想与获取的异步性质有关,但是如何解决?

componentDidMount(){

AsyncStorage.multiGet([USER_TOKEN, USER_REFRESH_TOKEN,USER_REMEMBERED]).then((data) => {
  const userRemembered = JSON.parse(data[2][1])
  const userAccessToken = data[0][1]
  const userRefreshToken = data[1][1]

  if (userRemembered) {
    fetch("SOME_URL", {
      method: "POST",
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        refreshToken: userRefreshToken
      })
    })
    .then(response => response.json())
    .then(responseData => {
      console.log(responseData); // only after clicking on the screen it is logged
      if (responseData.success) {
        AsyncStorage.multiSet([[USER_TOKEN,responseData.response.accessToken],[USER_REFRESH_TOKEN,responseData.response.refreshToken],[USER_REMEMBERED,JSON.stringify(true)]])
        this.setState({
          token:responseData.response.accessToken,
          refreshToken: responseData.response.refreshToken,
          isLoggedIn: true
        }) //only after clicking on the screen state is changed
        this.changeRoute(this.state) //only after clicking on the clicking on the screen route is changed
      }
      else {
        console.log("API is not responding");
      }
    })
    .catch((error) => {
      console.log(error)
    })
  }
  else{
    console.log('user has not checked Remember Me');
  }
})

}

我终于弄明白了。 我打开了“ 远程JS调试 ”,这很麻烦。 我将其关闭,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM