Я столкнулся с чем-то необычным при попытке настроить состояние из функции в React.
Простой пример включает в себя попытку изменить состояние testState
, содержащее строку. Я думаю, что я могу использовать setTestState()
из функции, чтобы изменить строку и увидеть ее измененное значение. Тем не менее, я заметил, что console.log(testState)
выводит то же состояние, и поэтому кажется, что setTestState(...)
ничего не делает. Но визуализированное состояние использует обновленную строку.
Так почему же console.log(tempState)
отображает исходное состояние, а не новое? Я не смог найти ответы на это. Код, который я использовал ниже. Любые предложения будут великолепны.
import React, { useState, useEffect } from "react";
import "./App.css";
function App() {
const [testState, setTestState] = useState("previous state");
useEffect(() => {
setGrid();
}, []);
const setGrid = () => {
console.log(testState); // output: "previous state"
setTestState("changed state");
console.log(testState); // output: "previous state", expected "changed state"
}
return (
<div>
{testState}
</div>
);
}
export default App;