【发布时间】:2021-05-23 04:34:29
【问题描述】:
我对 react 中的功能组件不熟悉,我在更新数据时遇到了问题。这是我的函数,它只是将实际数据设置为变量,找到实际项目并更新它。问题是正确找到实际项目但不更新数据。当然,数据只是带有元素数组的 useState。
const onEditElement = (elementId) => {
let elements = data;
let actualElement = elements.find((x) => x.id === elementId);
actualElement = { value: "newValue" };
setData(elements);
};
这就是数据的样子:
const [data, setData] = useState([{id: 1, value: "initial"}]);
我该如何解决这个问题?是什么原因造成的?
【问题讨论】:
-
您应该编写代码的整个部分。提一下数据结构和渲染部分
-
我认为您可能必须创建数组的克隆并使用克隆调用 setData(),否则将无法检测到更改。
-
我认为您正在为状态设置相同的数据。你的状态是这样的吗?
const [data, setData] = useState([...]);。尝试设置不同的东西,我猜你找到的元素。 -
@AdriSolid 是的,这正是我的状态
-
试试这个:
setData([{ id: 1, ...actualElement }]);。始终假设您的数组状态中只有一项。
标签: reactjs react-hooks use-state react-functional-component