当前位置: 首页 > 知识库问答 >
问题:

如何将一个项目推入数组,如果它在一个javascript对象[state.lastValue.push不是一个函数]

宇文航
2023-03-14

我更新一些值作为一个javascript对象内我的还原器reactjs像下面这样。

这是更新之前的对象

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

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

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

因此,这给了我一个错误,state.lastValue.push不是一个函数。但如果我像下面这样做就好了,

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

这很好。什么原因。

共有2个答案

白星腾
2023-03-14

原因是,当你写:

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

国家的最终地位将是:

state = {
   ...state,
   result:  some value
   lastval: 20
}

意味着state.lasteval将成为一个数字,它将不是一个数组,因为a.push(1)不会返回最终数组,它将返回推入数组的项。

按如下方式编写以更新状态:

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

检查此代码段:

let a = [1,2];

let b = [];

b = a.push(3);

console.log('a', a);

console.log('b', b);
纪翰
2023-03-14

像这样更新你的状态

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

lastval:[…state.lastval,20]将对state.lastval数组中的所有内容进行解构,并将20添加到数组中,然后再次将其包装到数组中。

有关[…state.lastval]的更多信息,请阅读Reactjs中此语法“{…x}”的含义

 类似资料: