Size: a a a

Reatom — стейт-менеджер

2020 April 09

IN

Ivan Niemtinov in Reatom — стейт-менеджер
О, спасибо! Да можно без декораторов. Из его примеров:

class Doubler {
 value = observable(1)

 double = computed(function () {
   return this.field * 2
 })

 increment = action(function () {
   this.value++
 })

 constructor() {
   initializeObservables(this)
 }
}

Выглядит норм, хотя, не очень здорово с this. Но жить можно.
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
Привет, Артём, спасибо за классную либу! Начал юзать на рабочем проекте, пока очень хорошие впечатления!
Могу немного законтрибутить? Например, можно в доки добавить много чего с форума (про тот же getState, зачем нужен он по-отдельности), пофиксить английские ошибки.
Ещё можно бы добавить useStore в @reatom/react.
Это прям очень радостно слышать)
Контрибьютить более чем нужно!

Вообще в реатом очень много чего пришло не от меня, за что всем участникам большое спасибо) Я сам все время опаздываю что-то делать…
источник

IN

Ivan Niemtinov in Reatom — стейт-менеджер
artalar
Это прям очень радостно слышать)
Контрибьютить более чем нужно!

Вообще в реатом очень много чего пришло не от меня, за что всем участникам большое спасибо) Я сам все время опаздываю что-то делать…
Отлично!
источник

IN

Ivan Niemtinov in Reatom — стейт-менеджер
artalar
Это прям очень радостно слышать)
Контрибьютить более чем нужно!

Вообще в реатом очень много чего пришло не от меня, за что всем участникам большое спасибо) Я сам все время опаздываю что-то делать…
Я вот смотрю, можно ли приделать что-то типа https://github.com/microsoft/tsdoc, чтобы на основании JSDoc-комментариев из кода автоматически генерить  документацию к API (в билд-скрипте). Что скажешь?
источник

IN

Ivan Niemtinov in Reatom — стейт-менеджер
Можно и ручками генерить доки, но опыт показывает, что тогда дока всегда будет отставать от кода. А JSDoc-комментарии ещё можно линтить, и тогда они гарантированно будут правильными
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
Как насчёт такого аргумента: либа должна давать максимум возможностей, а какой стиль использовать - зависит от команды.
Если у нас всё сделано на dispatch, не переделывать же? И многие тоже используют. И каждая команда будет делать свой useStore. А зачем?
Точно так же с остальным, что не вошло в @reatom/ core / react, и лежит в https://gist.github.com/artalar/55633a46b8a69146a31a053bdc9630eb#file-prev-ts - опять копировать к себе, да ещё и нужно проверять, не поменялся ли оригинал. А вдруг там глюк будет?
И да и нет. Я вообще, обычно, придерживаюсь достаточно однозначных позиций и буду их отстаивать. Но при это прекрасно понимаю что для разных людей / команд / проектов разные аргументы имеют разный вес и ценность, поэтому да, реатом старается быть максимально гибким и навязывать минимум. Но, все же, какие-то бест-практис должны выделяться и подчеркиваться в доке как основные - и если их будет много и они будут в чем-то противоречить друг другу - это внесет неясность в доку в общем. А еще если что-то советовать - то делать это с какой-то уверенностью и проверенностью.
Так же, напомню, что реатом очень-очень старается экономить каждый байтик в бандл-сайзе, поэтому внесение нового апи это вопрос который должен рассматриваться особенно щепетильно.
У меня уже был опыт принятия быстрых решений - в итоге текучая реализация сайд-эффектов требует рефактиоринга с брейкинг-чендж (я про массив реакций в declareAction).

В итоге, я за то что бы описывать альтернативы в каком-то отдельном месте доки (гайды, например) - это прям надо, а вот добавлять что-то в core - это всегда большой вопрос.
источник

a

artalar in Reatom — стейт-менеджер
Ilyas Kabirov
не, это только говорит о том что useActions это плохая идея
Можно не деструктерировать результат useActions 🙂
Но вообще это тоже спорный вариант, нужно еще подумать

P.S. не useActions, а перегрузка useAction (ох как я люблю перегрузки)
источник

a

artalar in Reatom — стейт-менеджер
Ilyas Kabirov
посмотрим во что это выльется
reatom/immer 🙂
источник

I

Ilyas Kabirov in Reatom — стейт-менеджер
artalar
И да и нет. Я вообще, обычно, придерживаюсь достаточно однозначных позиций и буду их отстаивать. Но при это прекрасно понимаю что для разных людей / команд / проектов разные аргументы имеют разный вес и ценность, поэтому да, реатом старается быть максимально гибким и навязывать минимум. Но, все же, какие-то бест-практис должны выделяться и подчеркиваться в доке как основные - и если их будет много и они будут в чем-то противоречить друг другу - это внесет неясность в доку в общем. А еще если что-то советовать - то делать это с какой-то уверенностью и проверенностью.
Так же, напомню, что реатом очень-очень старается экономить каждый байтик в бандл-сайзе, поэтому внесение нового апи это вопрос который должен рассматриваться особенно щепетильно.
У меня уже был опыт принятия быстрых решений - в итоге текучая реализация сайд-эффектов требует рефактиоринга с брейкинг-чендж (я про массив реакций в declareAction).

В итоге, я за то что бы описывать альтернативы в каком-то отдельном месте доки (гайды, например) - это прям надо, а вот добавлять что-то в core - это всегда большой вопрос.
о, как раз возникал вопрос зачем там массив
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
Надо приспособиться, и выработать нормальный подход, и странных глюков почти не будет.
С бандлом - да. Можно бы и поменьше.
Есть вероятность что в 6ой версии поменьше будет
источник

IN

Ivan Niemtinov in Reatom — стейт-менеджер
artalar
И да и нет. Я вообще, обычно, придерживаюсь достаточно однозначных позиций и буду их отстаивать. Но при это прекрасно понимаю что для разных людей / команд / проектов разные аргументы имеют разный вес и ценность, поэтому да, реатом старается быть максимально гибким и навязывать минимум. Но, все же, какие-то бест-практис должны выделяться и подчеркиваться в доке как основные - и если их будет много и они будут в чем-то противоречить друг другу - это внесет неясность в доку в общем. А еще если что-то советовать - то делать это с какой-то уверенностью и проверенностью.
Так же, напомню, что реатом очень-очень старается экономить каждый байтик в бандл-сайзе, поэтому внесение нового апи это вопрос который должен рассматриваться особенно щепетильно.
У меня уже был опыт принятия быстрых решений - в итоге текучая реализация сайд-эффектов требует рефактиоринга с брейкинг-чендж (я про массив реакций в declareAction).

В итоге, я за то что бы описывать альтернативы в каком-то отдельном месте доки (гайды, например) - это прям надо, а вот добавлять что-то в core - это всегда большой вопрос.
Бест-практики - это отлично. Но dispatch-то - это ж базовая штука, которая во всех примерах есть. И она же часть best practices, или нет?
Но вообще, вопрос у меня возник в связи с переходом с redux, и, может быть, useStore должен пойти в @reatom/redux-compat
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
Подкупает. Но для него прикольно бы ещё написать (или найти, если они есть) решения как в MobX -  чтобы сделал класс с декораторами @action, переменными и методами, которые изменяешь и вызываешь - а атомы и экшены создаются сами. Вот тогда и MobX можно будет выбросить. И это будет лучше MobX, потому что есть Redux DevTools, где всю кухню можно увидеть
Ну так можно сделать и мы даже как-то делать мини-версию такую, но в текущей реализации реатома это немного костыль.
С фьючерсами (о которых я уже пол года твержу, но все не релизну) реактивностью можно будет управлять намного проще и можно будет поверх относительно элегантно построить и мобыкс и что угодно…
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
В typescript - норм, в babel - да, увы.
В TS декораторы тоже экспериментальные, формально)
источник

IN

Ivan Niemtinov in Reatom — стейт-менеджер
artalar
И да и нет. Я вообще, обычно, придерживаюсь достаточно однозначных позиций и буду их отстаивать. Но при это прекрасно понимаю что для разных людей / команд / проектов разные аргументы имеют разный вес и ценность, поэтому да, реатом старается быть максимально гибким и навязывать минимум. Но, все же, какие-то бест-практис должны выделяться и подчеркиваться в доке как основные - и если их будет много и они будут в чем-то противоречить друг другу - это внесет неясность в доку в общем. А еще если что-то советовать - то делать это с какой-то уверенностью и проверенностью.
Так же, напомню, что реатом очень-очень старается экономить каждый байтик в бандл-сайзе, поэтому внесение нового апи это вопрос который должен рассматриваться особенно щепетильно.
У меня уже был опыт принятия быстрых решений - в итоге текучая реализация сайд-эффектов требует рефактиоринга с брейкинг-чендж (я про массив реакций в declareAction).

В итоге, я за то что бы описывать альтернативы в каком-то отдельном месте доки (гайды, например) - это прям надо, а вот добавлять что-то в core - это всегда большой вопрос.
Я вовсе не хотел настаивать, чтобы всё шло в core-пакет. Но вот наработанные, стандартные уже функции хорошо бы иметь не в gist и на плейграундах, а в пакетах, и в git
источник

a

artalar in Reatom — стейт-менеджер
О, точно
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
Я вот смотрю, можно ли приделать что-то типа https://github.com/microsoft/tsdoc, чтобы на основании JSDoc-комментариев из кода автоматически генерить  документацию к API (в билд-скрипте). Что скажешь?
В теории прикольно, но на практике достаточно сложно делать, боюсь
источник

IN

Ivan Niemtinov in Reatom — стейт-менеджер
artalar
Ну так можно сделать и мы даже как-то делать мини-версию такую, но в текущей реализации реатома это немного костыль.
С фьючерсами (о которых я уже пол года твержу, но все не релизну) реактивностью можно будет управлять намного проще и можно будет поверх относительно элегантно построить и мобыкс и что угодно…
Я смотрел фьючерсы - там для моего мозга не очень всё просто пока. Но даже на reatom 1.1, по-моему, можно поэкспериментировать с реактивностью
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
Бест-практики - это отлично. Но dispatch-то - это ж базовая штука, которая во всех примерах есть. И она же часть best practices, или нет?
Но вообще, вопрос у меня возник в связи с переходом с redux, и, может быть, useStore должен пойти в @reatom/redux-compat
@reatom/redux-compat - а вот это прям хорошая идея, думал над этим.
источник

IN

Ivan Niemtinov in Reatom — стейт-менеджер
artalar
В теории прикольно, но на практике достаточно сложно делать, боюсь
Я на выходных займусь
источник

a

artalar in Reatom — стейт-менеджер
Ivan Niemtinov
Я вовсе не хотел настаивать, чтобы всё шло в core-пакет. Но вот наработанные, стандартные уже функции хорошо бы иметь не в gist и на плейграундах, а в пакетах, и в git
В доке, в первую очередь.
источник