2 回答

TA貢獻1836條經驗 獲得超4個贊
您的效果缺少對columns
陳舊的關閉columns
的依賴性。
為了防止依賴性,您可以將回調傳遞給狀態(tài)設置器函數(shù)。您還以錯誤的方式使用 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)]
這樣你就把它變成一個字符串并且不根據(jù)引用進行比較
添加回答
舉報