arrays - 从数组状态ReactJS中删除一个对象

标签 arrays reactjs use-effect use-state

我有一个功能组件,因为我有一个以对象作为项目的数组状态。 现在我想删除特定位置的项目。

const [tasks, setTasks] = useState([
    { project: "aaaa", task: "xxxxx", status: true },
    { project: "bbbb", task: "yyyyz", status: true },
    { project: "cccc", task: "zzzzz", status: true }

  ]);

  function addTask(task) {
    setTasks(oldArray => [...oldArray, task]);
  }

  function deleteTask(pos) {
    let _tasks = tasks;
    _tasks.splice(pos, 1);
    setTasks(_tasks)
  }

这里任务被删除,但 UI 不会更新,直到我将新项目添加到状态数组。

最佳答案

这不会创建状态变量的副本 let _tasks =tasks;,而只是一个引用。因此,通过这样做,您可以直接改变状态变量。您可以通过简单地执行以下操作来删除给定位置的元素:

  function deleteTask(pos) {
    setTasks(oldArray => oldArray.filter((item, index) => index !== pos));
  }

这假设 pos 是一个整数,表示要删除的元素的索引

关于arrays - 从数组状态ReactJS中删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66718503/

相关文章:

php - 如何在表格中以垂直方式显示数组中的数据

arrays - 哈希值数组

javascript - Internet Explorer 上 Array.from 的替代方案或 polyfill

javascript - 重新渲染React js组件

reactjs - React hooks (useEffect) 无限循环澄清

javascript - Jest 因 TypeError : (0 , _user.default 失败而失败不是函数

java - 我们如何在不使用任何内置函数的情况下在 Java 中找到 String 的长度? (甚至不是 charAt() 或 toCharArray() 或 length())

reactjs - 无法在上下文 Hook 内调用函数

javascript - 在 Form.Item 内使用 value 属性进行选择不会反射(reflect)该 value 属性的任何更改

javascript - 如何使用钩子(Hook)迭代数组并保存数据