разница state и setState в useStake хуке
Сейчас нахожусь в процессе изучения и написал следующий код, который озадачил меня:
function App() {
const [state, setState] = useState("");
function handleChange(event) {
setState(event.target.value);
}
return <div>
<select value={setState} onChange={handleChange}>
<option value="grey">Серый</option>
<option value="green">Зеленый</option>
<option value="red">Красный</option>
<option value="yellow">Желтый</option>
</select>
<div className="color-div" style={{backgroundColor: setState}}></div>
</div>;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
Если в коде заменить setState на state, то код все равно работает корректно:
<select value={setState} onChange={handleChange}>
<div className="color-div" style={{backgroundColor: setState}}></div>
Зачем тогда объявлять две переменные в хуке useState?
Ответы (1 шт):
Автор решения: MrYogurt
→ Ссылка
Формально вы можете изменить стейт напрямую, установив значение state, но в этом случае не произойдет рендера компонента.
setState нужен, чтобы дергать react api, говоря компоненту, что нужно обновиться.