2 回答

TA贡献1836条经验 获得超4个赞
您的效果缺少对columns
陈旧的关闭columns
的依赖性。
为了防止依赖性,您可以将回调传递给状态设置器函数。您还以错误的方式使用 Array.prototype.map,您应该使用 Array.prototype.reduce:
useEffect(() => {
setColumns((columns) =>
data
? data.customer.reduce(
(columns, item) => ({
...columns,
[item.progress]: {
...columns[item.progress],
tasks: [
...columns[item.progress].tasks,
item,
],
},
}),
columns
)
: columns
);
}, [data]);

TA贡献1802条经验 获得超5个赞
因为 data 是一个 useEffect 对象,无法跟踪其内部变化,因为比较是通过引用进行的
你可以这样做
这是通过物体的长度进行比较的方法
React.useEffect(()=>{},[data.length])
或者,您也可以这样做
React.useEffect(()=>{},[JSON.stringify(data)]
这样你就把它变成一个字符串并且不根据引用进行比较
添加回答
举报