Size: a a a

Elm Lang сообщество разработчиков

2020 September 18

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Alexey Yurchenko
очень многие не понимают зачем

useEffect(() => {
 const t = setTimeout(() => ... setState('some'), ...);
 return () => clearTimeout(t); // зачем вот это писать
});

Со старым componentDidMount тоже самое было и тп.
а тут банально один раз запоминается lifecycle, от начала до конца. Тут проблема, что реально много кто не понимает, что этот код может отработать, когда уже нет компонента, а реакт вообще отключили на странице.
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Denis Krivosheev
Поддержкой не занимаетесь? Риалтайма нет?
не понял про поддержку.
большая часть кейсов у меня это "загрузить данные, показать, выполнить запрос по действию пользователя", дальше это уходит в другой компонент и все по кругу. нечего мутировать
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Alexey Yurchenko
не понял про поддержку.
большая часть кейсов у меня это "загрузить данные, показать, выполнить запрос по действию пользователя", дальше это уходит в другой компонент и все по кругу. нечего мутировать
А обработка действий пользователя?
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Denis Krivosheev
А обработка действий пользователя?
setState(newDataFromServer)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Как менеджить стейт? Редакс? Мобикс? Эрикс?
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Denis Krivosheev
Как менеджить стейт? Редакс? Мобикс? Эрикс?
почти никак, там микролиба. В глобальном стейте пару полей. Типа токена или корзины.
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Там нет вложенности... deepClone не нужен
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Alexey Yurchenko
почти никак, там микролиба. В глобальном стейте пару полей. Типа токена или корзины.
А ну я понял... очень разные кейсы у нас, поэтому и боль разная
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Я привык к гигантским приложениям, риалтайму, постоянной борьбой с перформансом
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Denis Krivosheev
А ну я понял... очень разные кейсы у нас, поэтому и боль разная
https://github.com/andregardi/use-global-hook
если интересно. Там меньше 1к кода, чтобы менеджить пару полей в глобальном стейте больше не нужно
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
(раньше все было в одном файле, сейчас зачем-то растащили на мелкие и опционально immer добавили 🤦‍♂️)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Оу ((( глобал стэйт прям в компонент... тесты не пишете?
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
пишем. Тут нет разницы с redux
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
А как тестить то что берет Стэйт откуда то извне? Мочить?
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Хотя я ушёл до хуков ещё, мне этого не понять)
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Denis Krivosheev
А как тестить то что берет Стэйт откуда то извне? Мочить?
Мок require
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Надо посмотреть как они их сделали эти хуки... уж больно магией попахивает
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Denis Krivosheev
Надо посмотреть как они их сделали эти хуки... уж больно магией попахивает
Привязали стейт к дереву дом
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Функция возвращает результат, но этот результат может измениться, если какая-то фигня вовне поменяется
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Я сразу тогда понял как сделано. Было бы круто если бы делали

const Component = (props, io) => {
 const [state, setState] = useState(io);
}

было бы меньше магии
источник