在React Hook中,如何更改useState数组的特定值?

Soo*_*eon 4 javascript reactjs react-hooks

  let [_value, setValue] = useState([1, 2, 3, 4, 5, 1, 2, 3, 4, 5 ]);
Run Code Online (Sandbox Code Playgroud)

在此代码中,如果我想更改 _value[3] 如何使用 setValue 更改值?

在我的项目中,当单击(评级)按钮时,我必须更改 _value[index]。

所以我必须动态更改 _value[index]。

如果您知道答案,请告诉我。谢谢你!

Nic*_*ick 6

在 JavaScript 中更新数组通常有几种方法。重要的是,无论你做什么,你都要确保不会改变现有状态。

一种方法是制作数组的浅表副本,改变副本并设置新状态:

function update(index, newValue) {
  // shallow copy
  const newArray = [..._value];
  // mutate copy
  newArray[index] = newValue;
  // set state
  setValue(newArray);
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是map遍历数组,当索引与所需索引匹配时返回新值。

function update(index, newValue) {
  const newArray = _value.map((v, i) => {
    if (i === index) return newValue;
    return v;
  });
  setValue(newArray);
}
Run Code Online (Sandbox Code Playgroud)