亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你能在useEffect中使用array.push嗎?反應掛鉤

你能在useEffect中使用array.push嗎?反應掛鉤

開滿天機 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);

查看完整回答
反對 回復 2023-06-15
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

要將數據添加到您的本地狀態,您不必使用推送,而只需使用“setTransactionDataArray”,因為這是將數據添加到狀態的函數。

所以在你的useEffect

  useEffect(() => {
      setTransactionDataArray(transactionData)
  }, [transactionData])

或者,如果您想要一個包含數據的數組,那么稍后將該數組添加到狀態,而不是您應該聲明一個數組并向其中添加數據。然后當工作完成時,您可以在狀態中添加該數組。


查看完整回答
反對 回復 2023-06-15
  • 2 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號