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

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

React useState hook:將 setter 傳遞給子功能更新

React useState hook:將 setter 傳遞給子功能更新

瀟湘沐 2022-07-08 10:54:23
關于 React 鉤子,我有幾個彼此相關的問題:useState和useCallback.究竟何時需要功能更新?1.1。如果 setter 函數接收到一個函數,它的參數將始終是之前的狀態?如果我想從子組件更新父狀態,我應該如何將設置器傳遞給子組件 - 將其包裝在另一個函數中作為回調,如此處所述?只是按照這里的建議直接傳遞?2.1。每種方法的原因和優點/缺點是什么?如果我可以直接傳遞它并且我正在使用備忘錄,那么這里是否需要 useCallback ?如果我想在從孩子更新父狀態時使用最新的狀態數據,我應該怎么做?4.1。在這種情況下向孩子傳遞回調有用嗎?
查看完整描述

1 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

1. 究竟什么時候需要功能更新?


您可能需要更新組件的任何狀態。例如,您通過 api 從服務器獲取用戶,您需要將該用戶存儲在您的組件中。為此,您需要 useState 來存儲該用戶對象。這是示例:


const [user, setUser] = useState({}); // declaration


let newUser = u; // u is coming from api

setUser(newUser);

1.1。如果 setter 函數接收到一個函數,它的參數將始終是之前的狀態?


是的。類組件中使用了 setState 之類的 setter 函數。這是僅更新狀態字段的示例:


this.setState({username: 'khabir'});

在這里,您正在使用以前的狀態更新狀態:


this.setState(prevState =>{

   return{

        counter : prevState.counter +1

   }

})

2.如果我想從子組件更新父狀態,我應該如何將設置器傳遞給子組件-將其包裝在另一個函數中作為回調,如此處所述?只是按照這里的建議直接傳遞?


兩個例子都是一樣的。你可以使用任何人。


3. 如果我可以直接傳遞它并且我正在使用備忘錄,那么是否需要使用這里解釋的 useCallback ?


如果您將任何函數引用從父組件傳遞給子組件,則會在每次渲染 Parent 時創建它,因此 prevProps 和 props 不再相同,即使它們是相同的。


要應用備忘錄,我們需要確保函數引用不會在每次渲染 Parent 時不必要地重新創建。這就是使用 useCallback 的原因。請完整閱讀該文章以獲得更好的理解。


4.如果我想在從child更新父狀態時使用最新的狀態數據,我應該怎么做?


您不能直接從子組件更新父狀態,但您可以將函數引用發送到子組件并從在父組件上定義(函數)的子組件調用該函數。在該函數體中(在父級中),您可以更新父組件的狀態。


4.1。在這種情況下向孩子傳遞回調有用嗎?


是的,正如我在問題 4 的答案中所說的那樣。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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