開滿天機
2023-06-15 17:28:02
我正在嘗試找出一種將對象添加到我的數組中的方法。這是代碼。export default function DashboardTable(props) { const { transactionData } = props; const classes = useStyles(); const [transactionDataArray, setTransactionDataArray] = useState([]) useEffect(() => { setTransactionDataArray(transactionDataArray.push(transactionData)) }, [transactionData]) console.log(transactionDataArray);transactionData 返回對象(對象的數量是可變的,具體取決于后端事務。)我想將對象添加到數組中,transactionDataArray但我不斷收到錯誤消息transactionDataArray is not a function。我哪里錯了?
2 回答

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
是的,您可以在 useEffect 中使用推送,但不能在狀態上使用。反應狀態不能直接改變。作為一個狀態,您不能直接推送或編輯狀態數據transactionDataArray。但是借助setTransactionDataArray功能,您可以更改/設置狀態值。因此,要向舊狀態添加新值,您必須解構舊狀態并添加新值,如下所示
setTransactionDataArray([...transactionDataArray, transactionData])
或者您可以像下面那樣通過創建新變量分配狀態值然后將新值推送到變量并最后設置狀態
const data = transactionDataArray;
data.push(transactionData);
setTransactionDataArray(data);

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
要將數據添加到您的本地狀態,您不必使用推送,而只需使用“setTransactionDataArray”,因為這是將數據添加到狀態的函數。
所以在你的useEffect
useEffect(() => { setTransactionDataArray(transactionData) }, [transactionData])
或者,如果您想要一個包含數據的數組,那么稍后將該數組添加到狀態,而不是您應該聲明一個數組并向其中添加數據。然后當工作完成時,您可以在狀態中添加該數組。
添加回答
舉報
0/150
提交
取消