在useImperativeHandle中的狀態不具有持久性
P粉786800174
P粉786800174 2024-04-01 00:20:12
0
1
326

假設我處於這種狀態:

const [data, setData] = useState([]);

並將其放入 useImperativeHandle 中,如下所示:

useImperativeHandle(ref, () => ({
   data,
}));

當我使用 useEffect 來追蹤狀態是否像這樣改變時:

useEffect(() => {
   console.log(componentRef.current.data);
}, [componentRef.current.data])

它不起作用,只有當我手動檢查它時,就像有一個按鈕 onClick 它將列印出來,否則它不是有狀態的。為什麼會這樣呢?有其他方法可以讓它發揮作用嗎?還是將狀態轉移到父級的唯一方法?

P粉786800174
P粉786800174

全部回覆(1)
P粉674999420

useEffect 不是反應式的。它不追蹤事物。它只是比較渲染之間的依賴關係,如果有差異,它就會執行給定的回調。具有 useEffect 的元件應該重新渲染才能執行該功能。

您可以做的是將回調從父級傳遞給子級,以便子級在更改狀態時可以呼叫它

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!