Полагаю, проблема в том, что вы пытаетесь напрямую изменить состояние selected
. Даже если вы используете Set
, вам все равно нужно использовать установщик setSelected
, чтобы вызвать изменение, влияющее на useEffect
, если у вас есть selected
в списке зависимостей.
Я бы попробовал как-то следующее:
useEffect(() => {
console.log('effect');
// your actions ...
}, [selected]);
const handleClick = (topic) => {
const newSelected = new Set(selected);
newSelected.add(topic);
setSelected(newSelected);
}
Используя new Set(selected)
, вы создаете поверхностную копию Set
из selected
, используя конструктор. Затем вы можете добавить новые предметы к вновь созданному Set
. Наконец, вам нужно использовать setSelected
для обновления значения selected
, которое вызовет useEffect
, как вы и ожидали ранее.
Надеюсь, это поможет!