как следует из названия, я пытаюсь сделать так, чтобы useEffect запускался только при изменении реквизита, но не при изменении состояния (или, в частности, он не должен запускаться при запуске useState).
Причина этого в том, что у меня есть пользовательские входные данные, которые по умолчанию являются входными данными, хранящимися в базе данных, но извлекаются при монтировании, но МОГУТ измениться при изменении реквизитов.
useEffect(() => {
let userTags = [];
props.question.tagVotes.forEach((tagVote) => {
if (_.includes(tagVote.users, props.user.username)) {
userTags.push(tagVote.tag);
}
});
setChosenTags(userTags);
});
Является ли это возможным? Спасибо.





Функция, указанная в качестве первого аргумента для useEffect, будет запускаться каждый раз, когда любой из элементов в массиве, указанном в качестве второго аргумента, изменяется, поэтому вы можете поместить реквизиты в этот массив, чтобы он снова запускался при изменении любого из реквизитов.
Пример
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]);
// ...
}