首页 > 解决方案 > 在方法中使用状态,但状态不会立即更新

问题描述

我有一个函数调用以获取新的访问令牌 getNewAccessToken() 并在该方法中将令牌设置为状态。然后调用另一个方法 postComment() 但它还没有正确的 accessToken 状态(因为 setstate 是一个异步调用并且可能还没有值。解决这个问题的最佳方法是确保 postComment( ) 具有正确的状态值?

  goPost() {
    console.log("In goPost()");
    this.getNewAccessToken();
    this.postComment();
  }
async getNewAccessToken(){
      const response = await fetch(
        `https://www.reddit.com/api/v1/access_token`... set up fetch
      );
      if (response.ok) {
         this.setState({
            accessToken: json.access_token
         });
      }
}
async postComment() {
    let accessToken = this.state.accessToken;
}

标签: javascriptreactjsecmascript-2016

解决方案


你可以在里面做这个postComment-

  1. 检查状态是否有access_token,如果有,跳转到3,如果没有,
  2. 调用getNewAccessToken里面的postComment方法,
  3. 提取access_token,
  4. access_token调用以使用,发表评论
  5. 成功完成后,
  6. 将令牌保存在状态中并
  7. 下次,如果您的评论因access_token过期而失败,请getNewAccessToken再次致电(在第 2 点之后)并按照循环进行。

推荐阅读