Dasihub
@Dasihub

Почему в React чтобы изменить useState многие пишут вот так setState(pre => pre = data), а не просто так setState(data)?

Доброго времени суток уважаемые разработчики. Я джун разработчик пишу на React js, написал пару проектов. Каждый разработчик который пишет на React, будет работать с хуком useState. Чтобы изменить состояние хука я пишу setState(data), где-то я видел что некоторые пишу так setState(pre => pre = data). И конечно я хочу узнать почему так пишут. Может это оптимизирует приложение?
  • Вопрос задан
  • 301 просмотр
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Иногда может оптимизировать. Например
const [x, setX] = useState(0);
const f = useCallback(() => setX(x => x + 1), []);


Здесь f одна и та же, не пересоздается на каждый новый х. Если f передавать в пропсы мемо-компонента, он не будет апдейтиться, если не зависит от х.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Aetae
@Aetae
Тлен
setState(pre => pre = data) - это чушь бессмысленная.

setState(pre => {
  const data = <что-делаем с pre>;
  return data;
})
- другое дело. Такая функция не зависит от внешних данных, только от предыдущего состояния.
Ответ написан
Комментировать
В том виде, в котором приводите вы запись не имеет смысла. Зачем используется функция описано в документации.
https://reactjs.org/docs/hooks-reference.html#func...
Functional updates

If the new state is computed using the previous state, you can pass a function to setState. The function will receive the previous value, and return an updated value. Here’s an example of a counter component that uses both forms of setState:
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы