У меня есть две пары состояния/сеттера из разных источников (то есть одна из магазина и другая из состояния компонента), и мне нужно объединить их в один - потому что компонент представления необходимо изменить оба атомно. Как мне на самом деле это реализовать?const [state1, setState1] = ...
const [state2, setState2] = ...
const state3 = { ...state1, ...state2 } // straightforward
const setState3 = (func: (state: State3) => State3) => {
// what here?
// we need the current value of both states,
// and both need to be updated simulatenously somehow
// a simple approach like this doesn't work
const value = func(state3)
setState1(_.pick(func, ...))
setState2(_.pick(func, ...))
}
< /code>
В качестве примера рассмотрите простое приложение Todo. Одно государство содержит список TODO, а другое - индекс элементов. Если пользователь нажимает кнопку «Удалить», текущий элемент должен быть удален, а активный индекс обновляется, чтобы убедиться, что все еще выбран допустимый элемент. Если мы не делаем этого атомно, мы могли бы получить неверное состояние во время рендеринга. Таким образом, функции обновления нуждаются в текущих значениях обоих состояний, и она должна обновлять их оба одновременно.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... gle-object
Как объединить два состояния в один объект? ⇐ Javascript
Форум по Javascript
-
Anonymous
1750395200
Anonymous
У меня есть две пары состояния/сеттера из разных источников (то есть одна из магазина и другая из состояния компонента), и мне нужно объединить их в один - потому что компонент представления необходимо изменить оба атомно. Как мне на самом деле это реализовать?const [state1, setState1] = ...
const [state2, setState2] = ...
const state3 = { ...state1, ...state2 } // straightforward
const setState3 = (func: (state: State3) => State3) => {
// what here?
// we need the current value of both states,
// and both need to be updated simulatenously somehow
// a simple approach like this doesn't work
const value = func(state3)
setState1(_.pick(func, ...))
setState2(_.pick(func, ...))
}
< /code>
В качестве примера рассмотрите простое приложение Todo. Одно государство содержит список TODO, а другое - индекс элементов. Если пользователь нажимает кнопку «Удалить», текущий элемент должен быть удален, а активный индекс обновляется, чтобы убедиться, что все еще выбран допустимый элемент. Если мы не делаем этого атомно, мы могли бы получить неверное состояние во время рендеринга. Таким образом, функции обновления нуждаются в текущих значениях обоих состояний, и она должна обновлять их оба одновременно.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79672642/how-to-combine-two-states-into-a-single-object[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия