javascript - 使用 React 扩展运算符在数组中设置 State

标签 javascript reactjs spread-syntax

我的 react 状态有一个值,如下所示:

appointmentsData = {
  "05-01-2018": [
    {
      id: "1",
      friendly: "9:00am - 10:00am",
      openDateTime: "9:00am",
      closeDateTime: "10:00am"
    }
  ]
};

我有一条新数据:

const newAppt = {"06-30-2018":[]}

如何添加我在该州的数据?我试过了

this.setState({ ...this.state.appointmentsData, ...newAppt}); 

不过,它似乎没有添加到状态中。我在渲染中得到与以前相同的值(传播前的约会数据)。 newAppt 永远不会被添加到状态中。

我正在尝试让我的状态期望输出为:

appointmentsData = {
  "05-01-2018": [
    {
      id: "1",
      friendly: "9:00am - 10:00am",
      openDateTime: "9:00am",
      closeDateTime: "10:00am"
    }
  ],
  "06-30-2018": []
};

最佳答案

确实有很多方法可以做到这一点。这是一个:

this.setState(prevState => (
  {appointmentsData: {...prevState.appointmentsData}, newAppt}
));

尽管您的方法也应该有效,但如果您只是先添加 appointmentsData: 。就像这样:

this.setState({appointmentsData: {...this.state.appointmentsData, ...newAppt}});

这会将所有先前的值以及您要添加的值分散到一个新对象中。

当新状态取决于先前的状态值时,我个人总是使用设置状态的函数方式,但您的方式在这里也很好。

关于javascript - 使用 React 扩展运算符在数组中设置 State,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51118865/

相关文章:

javascript - 使用 RequireJS 模块化 CSS 样式表

javascript - 如何右对齐/对齐 Bootstrap 下拉菜单项?

javascript - 加载延迟 CSS 后运行代码

reactjs - 如何在不使用函数的情况下在 Firebase 主机上渲染 ssr 项目?

javascript - Redux:在 2D 数组上使用 Spread 运算符

javascript - 使用扩展运算符从 ES6 中的对象中删除目标参数

javascript - 如何强制 jQuery 向服务器发出 GET 请求以刷新缓存资源

node.js - fatal error : Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory when running a react app

javascript - 从 React 中的同一选择下拉表单字段获取多个值

javascript - javascript中rest参数和展开运算符的使用