#javascript #reactjs #use-state
Вопрос:
Я видел несколько примеров того, как обновлять состояние на основе предыдущего состояния, но я не вижу много объяснений о том, когда обновлять состояние на основе предыдущего состояния, в большинстве примеров используется встречный пример, но что, если бы я устанавливал объект в состояние, это все равно было бы основано на предыдущем значении или я могу просто обновить состояние. например
const exampleData = [
{
text: 'Example name',
value: 1
},
{
text: 'Example name 2',
value: 2
}
]
const [asset, setAsset] = useState(exampleData[0]);
const handleClick = (event) => {
setAsset(event.target.value)
}
Итак, в примере я обновляю состояние в функции handleClick, но нужно ли мне обновлять его на основе предыдущего значения или нет?
Комментарии:
1. Это
value: 3
случайный выбор или он продиктован тем, что в настоящее время находится в штате? Тот же вопрос для текста, хотя это, по-видимому, менее вероятно, связано с текущим состоянием.2. Итак, это структура данных
exampleData
, но это пример3. Я спрашиваю о том, как рассчитывается новое состояние (
{text: 'update name', value: 3}
). Является ли новое состояние не связанным с предыдущим состоянием? Или вам нужно использовать что-то из предыдущего состояния для вычисления нового состояния?4. Я обновил вопрос, функция handleClick установит состояние на основе значения события.цель
5. Напишите любой код, который вы имеете в виду для вызова
setAsset
. Если это не принесет никакой пользыasset
, все в порядке. ИспользованиеexampleData
-это нормально.
Ответ №1:
Если вы хотите получить доступ previous state
, доступный в setState
действии
const [state, setState] = useState(false);
const handleClick = () => {
setState(prev => !prev); // true
setState(prev => !prev); // false
}
Обратите внимание: setState
является async
ли действие
Комментарии:
1. Но когда это будет использовано? в каком сценарии?
2. Вы можете использовать этот сценарий
whenever you want to update the state
и получить доступ к предыдущему состоянию.