Arrays 从数组状态中删除对象

Arrays 从数组状态中删除对象,arrays,reactjs,use-effect,use-state,Arrays,Reactjs,Use Effect,Use State,我有一个功能组件,因为我有一个数组状态,对象是项。 现在我想在特定位置移除一个项目 const [tasks, setTasks] = useState([ { project: "aaaa", task: "xxxxx", status: true }, { project: "bbbb", task: "yyyyz", status: true }, { project: "cc

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

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\u tasks=tasks,只是一个参考。所以这样做就是直接改变状态变量。只需执行以下操作,即可在给定位置删除元素:

  function deleteTask(pos) {
    setTasks(oldArray => oldArray.filter((item, index) => index !== pos));
  }
这假定
pos
是一个整数,表示要删除的元素的索引