Обновить

Комментарии 11

НЛО прилетело и опубликовало эту надпись здесь
Какая разница, хуки или нет, суть не в этом.
НЛО прилетело и опубликовало эту надпись здесь
Ну разве не красота?

Нет) В реальной жизни при использовании реактовского стейт менеджмента получается убожество во всей красе.
А красота это вот: codesandbox.io/s/cool-leaf-xnh59?file=/src/App.tsx
НЛО прилетело и опубликовало эту надпись здесь
Пример который я скинул, там именно локальный стейт компонента, а не глобальный. MobX заменяет идеально и тот и другой.

то еще лучшее mobx-state-tree. Там и патчи (очень помогает если вы свою модель с сервером синхронизируете, когда один документ редактируют несколько пользователей одновременно например), и снапшуты, и много чего еще вкусного.

В mobx есть autorun и reaction — пожалуйста, синхронизируйтесь с чем угодно, хоть с сервером, хоть с query параметрами урла. Так же используя их делайте снапшоты сколько угодно и как угодно. mobx-state-tree не дает ничего крутого на самом деле, вам только может так казаться, но это связано с тем что попросту можете не знать возможности mobx'a. Вообщем mobx-state-tree нафиг не нужен, он только мешает и делает код придурковатым, вместо того чтобы писать код максимально простым и понятным. Любые ваши желания и фантазии можно с легкостью реализовать с помощью mobx'a. А для описания моделей более чем достаточно и более правильно использовать Typescript.

Внимательнее глянул ваш пример, вы сами хуки пользуете. А новичкам предлагаете примеры с классами. Почему так?

Я использую хук useState только для того, чтобы получить инстанс MobX класса, чтобы это был локальный стейт компонента, а не потому что я использую реактовский стейт менеджмент на хуках.
НЛО прилетело и опубликовало эту надпись здесь
Вот простой пример. Допустим у нас есть документ с данными, он хранится в массиве на сервере. С ним одновременно работают несколько человек в реальном времени. Один пользователь поменял у себя в модели какой-то элемент массива. Вопрос: как вы передадите изменения от этого пользователя всем остальным? как организовать удаление/обновление/создание новых элементов сразу у всех пользователей данного документа (будете писать экшены в духе редакса?)? а когда сложность и глубина структуры данных начнет расти?

Ну вообще это элементарно, когда под рукой есть Javascript и WebSocket's(не обязательно, но с ними гораздо лучше). И без разница какой уровень вложенности в ваших массивах и объектах.

MST знает о структуре данных, в отличие от mobX, что сильно упрощает работу с ними.

Typescript / Flow знает о структуре данных.

И про хуки. Ваша статья называется «Контролируемые и неконтролируемые компоненты в React не должны быть сложными». функции + хуки -> меньше кода, выше наглядность -> снижение сложности.

Это не моя статья =)

Вообщем в дальнейшей дискуссии не вижу смысла. И доказывать вам что-то, тоже не вижу смысла. Пользуйтесь чем угодно на здоровье и как угодно, все равно мне с вашим кодом не работать =)

P.S. в духе редакса я ничего не пишу и не делаю, этот «дух» мне противен и меня удивляет что до сих пор в новых проектах кто-то берет Redux и пишет эту кашу с лапшой.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Возможно из-за того, что в проектах, которые старше 2018 года используются классовые компоненты, а таких проектов много. И вероятность того, что новичка посадят на дебаг старого проекта куда выше, чем вероятность того, что его пустят на новый проект
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации