reactjs React useState覆盖Array?

oalqel3c  于 2023-06-22  发布在  React
关注(0)|答案(1)|浏览(241)

我有一个数组,在React中使用useState设置。我想给它添加一个元素,因为它还不包含元素。
语法应该没问题,但是React总是覆盖数组,所以数组总是只包含一个元素。有人知道为什么吗?

const isInArray = (arr: any, elCompare:any) => {    
    return  arr.some((el:any) => {
      return el.keyword_uid === elCompare.srcElement.__data__.data.uid
    }) ? [...arr]
    : [...arr, {keyword_uid: elCompare.srcElement.__data__.data.uid, keyword_name: elCompare.srcElement.__data__.data.name}]
  }

  const buttonClicked =(d:any) => {
    setFilterArray(isInArray(dictFilterArray, d))
  }
ef1yzkbh

ef1yzkbh1#

这是在React中设置状态的正常行为。传入setState函数的任何内容都将用作新状态。
如果你想添加到一个数组类型的状态,你必须复制当前状态,在其中推送一些新数据,然后将副本传递给setState函数。
试试这个:

const buttonClicked =(d:any) => {
    setFilterArray(...filterArray, isInArray(dictFilterArray, d))
  }

相关问题