javascript - 如果项目在 javascript 对象内,如何将其插入数组 [state.lastValue.push 不是函数]

标签 javascript reactjs

我正在 reactjs 中的 reducer 中将一些值更新为 javascript object,如下所示。

这是更新前的对象

state = {
  result:1,
  lastval: []
}

这就是我要更新它的方式,

state = {
      ...state,
      result:state.result + 400,
      lastval: result.lastval.push(20)
    }

所以这给了我一个错误:state.lastValue.push is not a function。但如果我像下面那样做就没问题,

state = {
          ...state,
          result:state.result + 400,
        };
        state.lastval.push(20);

这很好。这是什么原因。

最佳答案

像这样更新你的状态

state = {
  ...state,
  result:state.result + 400,
  lastval: [...state.lastval, 20]
}

lastval: [...state.lastval, 20] 将解构 state.lastval 数组中的所有内容并添加 20到它并再次将它包装在一个数组中。

有关 [...state.lastval] 的更多信息,请阅读 What is the meaning of this syntax "{...x}" in Reactjs

关于javascript - 如果项目在 javascript 对象内,如何将其插入数组 [state.lastValue.push 不是函数],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44255143/

相关文章:

javascript - 在 React Web 应用程序中使用 createjs-soundjs

reactjs - React DnD 期望找到有效目标

reactjs - Strapi 富文本内容无法在网页上正确显示

node.js - 无法加载资源: the server responded with a status of 431 (Request Header Fields Too Large)

javascript - 更改 Angular 模板时执行 jQuery 语句时出现问题

javascript - JQuery 响应类型是字符串而不是文档对象

Javascript原型(prototype)排序函数不与所有成员进行比较

javascript - YouTube API nextPageToken

javascript - 在 Express.js 中处理路由的多个回调

javascript - 不可变的js map 存储对象丢失方法