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 的答案中所說的那樣。
添加回答
舉報