ошибка при добавлении значения в массив state в react
Я хочу условно добавить значение в массив. Это state
и функция добавления:
const [Selectors, setSelectors] = useState([]);
const SelectorAdd = (newValue) => {
setSelectors((array) => [...array, newValue]);
}
И я просто хочу добавить любое текстовое значение в массив Selectors
внутри этого условия:
{Yes ?
<>
<AnyComponent />
{SelectorAdd('text value')} <=== ТУТ
</>
: null}
И получаю эту ошибку:
Too many re-renders. React limits the number of renders to prevent an infinite loop.
Подскажите, пожалуйста, в чем ошибка? Спасибо!
Ответы (1 шт):
Автор решения: Armen
→ Ссылка
SelectorAdd() => setSelectors() => перересовка => заного по кругу бесконечно
const A = () => {
const [state, setState] = useState(0);
const [yes, setYes] = useState(true)
// //не правилный способ
// if (yes) {
// //запускает перересовку бесконечно
// setState((prev) => ++prev);
// }
//правильный
useEffect(() => {
if (yes) {
setState((prev) => ++prev);
}
}, [yes]);
//не имеет смысла внутри юзать setState
return yes && <div>что то</div>;
};