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

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

組件切換時狀態不會重置

組件切換時狀態不會重置

慕慕森 2023-09-07 16:17:59
我一直在嘗試有條件地顯示組件。外部處理:{show && <MyComponent />}內部處理:const MyComponent = () => {    const [externalState] = useContext();    const [state, setState] = useState("")         // Don't render base on some state value     if(externalState === false) return null;     return <input value={state} onChange={e=>setState(e.currentTarget.value)} type="text"/>}我注意到在第二種方法中,當我打開和關閉組件時,狀態不會重置。有沒有辦法解決這個問題,或者不推薦第二種方法。
查看完整描述

1 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

您會看到狀態保留的不同行為的原因是,MyComponent只要條件發生變化,第一個方法就會掛載或卸載。

如果show為 false,MyComponent則不僅是隱藏,而且實際上是從 DOM 中刪除。

在第二種方法中,僅從DOM 中刪除返回的 JSX,組件的其余部分保持安裝狀態,這意味著狀態得到維護。MyComponent

至于“修復”問題(大多數人實際上會看到狀態丟失是一個錯誤,所以這是一個不同的視角),最簡單的方法是繼續使用選項 1。你當然可以使用選項 2,但你必須每次show更新內部管理時添加一些額外的邏輯/函數調用來重置狀態。


查看完整回答
反對 回復 2023-09-07
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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