javascript - ReactJS - 如何更新嵌套和 "normal"状态属性?

标签 javascript reactjs state axios react-state-management

这就是我的状态的样子:

constructor(props, context) {
    super(props, context);

    this.state = {
      show: false,
      btnLabel: 'GO!',
      car: {
        owner: false, 
        manufacturer: false, 
        color: false
      }
    };
  }

这就是我修改状态的方式:

handleClickFetchPrice() {
      this.setState({btnLabel: 'Fetching data...' });
      console.log(this.state.fetchPriceBtn);

      const url = 'some url';
      axios.get(url)
        .then(res => {
          let car = [...this.state.car];
          car.owner = res.data.owner;
          car.manufacturer = res.data.manufacturer;
          car.color = res.data.color;
          this.setState({car});
        })
  }

属性 car 已更新,但 fetchPriceBtn 未更新 - console.log(this.state.fetchPriceBtn); 的输出为仍然开始!

我忽略了什么?为什么 fetchPriceBtn 没有更新?

最佳答案

React setState 是一个异步过程 - 你不知道确切的更新时间,你只能安排更新。

要实现所需的功能,您可以向 setState 方法提供回调。

this.setState({ btnLabel: 'Fetching data...' }, () => console.log(this.state.fetchPriceBtn))

您可以了解更多following the documentation关于方法。

关于javascript - ReactJS - 如何更新嵌套和 "normal"状态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897997/

相关文章:

reactjs - 使用 React Hook,尝试使用 forEach 获取多个数据

javascript - Netsuite 用户事件脚本正在获取 JavaScript 全局变量的空值

javascript - 颜色分配剑道图表

javascript - 为什么在 Angular 中使用 $http 而不是 jquery 的 ajax?

javascript - html 解析包含 javascript 的注释

node.js - 与Go API集成的React Frontend不同端口问题

javascript - 使用 React State 值和 Props

javascript - Material ui 中选项卡的内联样式不会改变颜色

javascript - 单击按钮时水平 react 滚动组件

javascript - 对数组进行排序并传递它后,React 钩子(Hook) useState/setState 不起作用