[英]Is it possible to only run useEffect on props change, but not state change?
正如標題所暗示的那樣,我試圖讓一個useEffect只運行在props更改上,但是如果我改變狀態則不行(或者特別是當我運行useState時它不應該運行)。
原因是我有用戶輸入,默認為存儲在數據庫中的輸入,但是在mount上獲取,但是如果props改變則CAN會改變。
useEffect(() => {
let userTags = [];
props.question.tagVotes.forEach((tagVote) => {
if (_.includes(tagVote.users, props.user.username)) {
userTags.push(tagVote.tag);
}
});
setChosenTags(userTags);
});
可能嗎? 謝謝。
每次作為第二個參數給出的數組中的任何元素發生更改時,作為useEffect
第一個參數給出的函數將運行,因此您可以將props放在此數組中,以便在任何props更改時再次運行它。
例
function App(props) {
useEffect(() => {
let userTags = [];
props.question.tagVotes.forEach(tagVote => {
if (_.includes(tagVote.users, props.user.username)) {
userTags.push(tagVote.tag);
}
});
setChosenTags(userTags);
}, [props.question]);
// ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.