Проблема в том, что внутри использования нет логики c. Эффект см. Ниже:
const [todos, setTodos] = useState([]);
useEffect(() => {
setTodos([1])
}, [todos])
Это также даст бесконечное значение l oop. но мы всегда даем одно и то же значение. Проблема в том, что когда он обновляется, зависимость становится истинной, поэтому он снова начинает выполнять useEffect (). Вы должны придумать какую-то конкретную логику c, например length
, изменилась, или вы можете принять новое состояние, подобное приведенному ниже
const [todos, setTodos] = useState([]);
const [load, setLoad] = useState(false);
useEffect(() => {
function populateTodos () {
axios.get(`http://localhost:8000/api/all-todos`)
.then(res => setTodos(res.data))
.catch(err => console.log(err));
}
populateTodos();
}, [load])
console.log(todos)
return (
<div>
<button
onClick={() => {
todos.push(1)
setLoad(!load)
}}
>cilck</button>
</div>
);