未设置状态,数据无法从调用中获取

时间:2020-03-01 18:27:47

标签: javascript reactjs api fetch

我可以console.log(data)在setState的行之前和之后,但不能成功设置confirmDetail的状态,但是购物车可以工作。

    const init = {
      method: 'POST',
      body: JSON.stringify(information),
      headers: { 'Content-Type': 'application/json' }
    };
    fetch('api/orders', init)
      .then(response => response.json())
      .then(data => {
        if (!data.error) {
          this.setState(state => ({ cart: [], confirmationDetail: data }));
        } else {
          Swal.fire(data.error);
        }
      });
  }```

3 个答案:

答案 0 :(得分:0)

我想在提取调用中使用this是有问题的。在您试图调用它的时候,实际上是未定义的。 您可以尝试关注吗?

    const init = {
      method: 'POST',
      body: JSON.stringify(information),
      headers: { 'Content-Type': 'application/json' }
    };
    const that = this;
    fetch('api/orders', init)
      .then(response => response.json())
      .then(data => {
        if (!data.error) {
          that.setState(state => ({ cart: [], confirmationDetail: data }));
        } else {
          Swal.fire(data.error);
        }
      });

答案 1 :(得分:0)

尝试一下:

WebElement element = new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("(//div[@id='brandSlider']/div[1]/div/div/div/img)[50]"))); 
((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);

答案 2 :(得分:0)

fetch('api/orders', init)
      .then(response => response.json())
      .then(data => {
        if (!data.error) {
          that.setState({
             ...confirmationDetail,
             confirmationDetail: data,
             cart: []
          });
        } else {
          Swal.fire(data.error);
        }
      });