useMountedState
檢查組件的掛載狀態
useMountedState 回傳一個函式,呼叫它可以檢查元件當前是否已掛載。這對於在非同步操作完成後安全地更新 state 很有用——在元件可能已經卸載的情況下避免 state 更新警告。
使用場景
- 在非同步操作(如 API 呼叫)完成後檢查元件是否仍然掛載再更新 state
- 防止在已卸載元件上執行 state 更新
- 為有延遲回呼的場景提供安全的 state 更新保障
注意事項
- 函式回傳:回傳的是一個函式(非布林值),呼叫它來檢查掛載狀態。這確保始終獲得最新的掛載狀態。
- React 18+:在 React 18+ 中,對已卸載元件的 state 更新不再產生警告,但此 hook 仍可用於避免不必要的操作。
- 相關 hooks:另請參閱
useFirstMountState追蹤是否為首次渲染,以及useMount用於掛載時的回呼。
Usage
Live Editor
function Demo() { const isMounted = useMountedState(); const [, update] = useState(0); useEffect(() => { update(1); }, []); return <div>This component is {isMounted() ? "MOUNTED" : "NOT MOUNTED"}</div>; };
Result
API
useMountedState
Returns
() => boolean: 組件的挂載狀態