Size: a a a

2020 October 21

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
если в репле выбрать любую версию кроме мастера, то в качестве бабель-плагина будет использоваться довольно старая версия которая действительно не смогла обработать хелперы, поэтому в коде проекта проблемы вызваны именно явлением выше
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
это заметно если создать через хелпер более одного стора
источник

AL

Alexander Leutsky in ☄️ effector
🚀🔬 🚀🔬🚀🔬
так, я сейчас ещё раз перечитал постановку вопроса — даже если не брать в рассчёт различия в работе бабель-плагинов, сериализация не будет работать с хелперами. sid — это позиция в исходном коде, сторы созданные в хелпере создаются в одной точке кода и будут иметь один сид, что означает, что на всех будет одно значение
подключил плагин и сериализация заработала, при этом даже с хелперами. За описание проблемы с хелперами - спасибо, чуть позже проверю
источник

AL

Alexander Leutsky in ☄️ effector
пока ещё свежи разговоры про хелперы и сериализацию…

Допустим: сайт сделан на react и на сайте есть 3 страницы и для каждой страницы нужен свой стор (Store), но все эти сторы между собой идентичны по структуре и в других аспектах тоже.

Т.е хотелось бы сделать модуль и переиспользовать его в трёх местах.

Для redux можно было бы это решить, написав какой-то генератор, который бы создавал редьюсер, экшены и селекторы под каждую страницу, или ещё как-то более элегантно.

В Эффекторе без ssr можно использовать fork и на каждой странице использовать Provider.

Но как быть, когда нужен ssr? Т.к в этом случае есть форк корневого домена и он на всё приложение раздаётся через Provider где-то в корне. Внутри домена создавать ещё домен? но тогда как передавать scope?
источник

🦜

🦜 in ☄️ effector
Alexander Leutsky
пока ещё свежи разговоры про хелперы и сериализацию…

Допустим: сайт сделан на react и на сайте есть 3 страницы и для каждой страницы нужен свой стор (Store), но все эти сторы между собой идентичны по структуре и в других аспектах тоже.

Т.е хотелось бы сделать модуль и переиспользовать его в трёх местах.

Для redux можно было бы это решить, написав какой-то генератор, который бы создавал редьюсер, экшены и селекторы под каждую страницу, или ещё как-то более элегантно.

В Эффекторе без ssr можно использовать fork и на каждой странице использовать Provider.

Но как быть, когда нужен ssr? Т.к в этом случае есть форк корневого домена и он на всё приложение раздаётся через Provider где-то в корне. Внутри домена создавать ещё домен? но тогда как передавать scope?
Нельзя без ssr, он не для этого
источник

DS

Dmitriy Shuleshov in ☄️ effector
Alexander Leutsky
пока ещё свежи разговоры про хелперы и сериализацию…

Допустим: сайт сделан на react и на сайте есть 3 страницы и для каждой страницы нужен свой стор (Store), но все эти сторы между собой идентичны по структуре и в других аспектах тоже.

Т.е хотелось бы сделать модуль и переиспользовать его в трёх местах.

Для redux можно было бы это решить, написав какой-то генератор, который бы создавал редьюсер, экшены и селекторы под каждую страницу, или ещё как-то более элегантно.

В Эффекторе без ssr можно использовать fork и на каждой странице использовать Provider.

Но как быть, когда нужен ssr? Т.к в этом случае есть форк корневого домена и он на всё приложение раздаётся через Provider где-то в корне. Внутри домена создавать ещё домен? но тогда как передавать scope?
Можно подробнее про генератор на редаксе?
источник

c⁣

createStore<🦉>... in ☄️ effector
Alexander Leutsky
пока ещё свежи разговоры про хелперы и сериализацию…

Допустим: сайт сделан на react и на сайте есть 3 страницы и для каждой страницы нужен свой стор (Store), но все эти сторы между собой идентичны по структуре и в других аспектах тоже.

Т.е хотелось бы сделать модуль и переиспользовать его в трёх местах.

Для redux можно было бы это решить, написав какой-то генератор, который бы создавал редьюсер, экшены и селекторы под каждую страницу, или ещё как-то более элегантно.

В Эффекторе без ssr можно использовать fork и на каждой странице использовать Provider.

Но как быть, когда нужен ssr? Т.к в этом случае есть форк корневого домена и он на всё приложение раздаётся через Provider где-то в корне. Внутри домена создавать ещё домен? но тогда как передавать scope?
это называется не генератор, а фабрика
источник

c⁣

createStore<🦉>... in ☄️ effector
Alexander Leutsky
пока ещё свежи разговоры про хелперы и сериализацию…

Допустим: сайт сделан на react и на сайте есть 3 страницы и для каждой страницы нужен свой стор (Store), но все эти сторы между собой идентичны по структуре и в других аспектах тоже.

Т.е хотелось бы сделать модуль и переиспользовать его в трёх местах.

Для redux можно было бы это решить, написав какой-то генератор, который бы создавал редьюсер, экшены и селекторы под каждую страницу, или ещё как-то более элегантно.

В Эффекторе без ssr можно использовать fork и на каждой странице использовать Provider.

Но как быть, когда нужен ssr? Т.к в этом случае есть форк корневого домена и он на всё приложение раздаётся через Provider где-то в корне. Внутри домена создавать ещё домен? но тогда как передавать scope?
для эффектора можешь создать ровно такую-же фабрику:
которая создаст сторы, ивенты, эффекты и организует связи внутри.

и для каждой страницы вызовешь эту фабрику:
const { $data, pageLoaded } = createPageLogic()
источник

c⁣

createStore<🦉>... in ☄️ effector
Alexander Leutsky
пока ещё свежи разговоры про хелперы и сериализацию…

Допустим: сайт сделан на react и на сайте есть 3 страницы и для каждой страницы нужен свой стор (Store), но все эти сторы между собой идентичны по структуре и в других аспектах тоже.

Т.е хотелось бы сделать модуль и переиспользовать его в трёх местах.

Для redux можно было бы это решить, написав какой-то генератор, который бы создавал редьюсер, экшены и селекторы под каждую страницу, или ещё как-то более элегантно.

В Эффекторе без ssr можно использовать fork и на каждой странице использовать Provider.

Но как быть, когда нужен ssr? Т.к в этом случае есть форк корневого домена и он на всё приложение раздаётся через Provider где-то в корне. Внутри домена создавать ещё домен? но тогда как передавать scope?
использовать fork для разных страниц, это не правильно, он для всего приложения целиком предназначен
источник

AL

Alexander Leutsky in ☄️ effector
createStore<🦉> ⁣
для эффектора можешь создать ровно такую-же фабрику:
которая создаст сторы, ивенты, эффекты и организует связи внутри.

и для каждой страницы вызовешь эту фабрику:
const { $data, pageLoaded } = createPageLogic()
как быть с serialize? sid’ы будут ведь одинаковые для таких сторов
источник

DS

Dmitriy Shuleshov in ☄️ effector
Alexander Leutsky
как быть с serialize? sid’ы будут ведь одинаковые для таких сторов
Страниц то конечное количество, насоздавай статически сразу
источник

c⁣

createStore<🦉>... in ☄️ effector
Alexander Leutsky
как быть с serialize? sid’ы будут ведь одинаковые для таких сторов
указать эффектор/бабель-плагину на эти фабрики
и правильно их описать
тогда всё заведется огонь

примеры можно поглядеть в patronum
ну и я могу подсказать, если возьмешься такое делать
источник

AL

Alexander Leutsky in ☄️ effector
Dmitriy Shuleshov
Страниц то конечное количество, насоздавай статически сразу
имеешь в виду копипаст?
источник

DS

Dmitriy Shuleshov in ☄️ effector
Alexander Leutsky
имеешь в виду копипаст?
Копипаст использования фабрики - да
источник

AL

Alexander Leutsky in ☄️ effector
Dmitriy Shuleshov
Можно подробнее про генератор на редаксе?
если просто: создаёшь ф-цию, в которую передаёшь строковый префикс, этот префикс используешь для унификации экшенов относительно страницы и в селекторах. Эта ф-ция возвращает структуру типа такой: {reducer, action1, action2,…, selector1, selector2, etc}. И это можно зареэкспортить.
источник

AL

Alexander Leutsky in ☄️ effector
createStore<🦉> ⁣
указать эффектор/бабель-плагину на эти фабрики
и правильно их описать
тогда всё заведется огонь

примеры можно поглядеть в patronum
ну и я могу подсказать, если возьмешься такое делать
а можешь подробнее про это “указать эффектор/бабель-плагину на эти фабрики” рассказать?
источник

c⁣

createStore<🦉>... in ☄️ effector
Alexander Leutsky
а можешь подробнее про это “указать эффектор/бабель-плагину на эти фабрики” рассказать?
источник

c⁣

createStore<🦉>... in ☄️ effector
Тут нужно в указать на место импорта фабрики, ее имя
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Alexander Leutsky
как быть с serialize? sid’ы будут ведь одинаковые для таких сторов
если у тебя действительно полностью независимые форки (это не самая частая ситуация), то сериализации будут проходить без проблем, так как будет нечему конфликтовать по сидам. но когда (даже не если) у тебя появятся общие сущности между страницами, то раздельные форки не смогут сообщаться и придётся делать общий. поэтому везде сразу рассказывается о том, как делать общий форк, а не постранично
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
я бы хотел добавить поддержку такого приёма как новое поле в бабель-плагине, но возникает вопрос как обрабатывать эдж кейсы, аргументы пользователя то особо не повкладываешь друг в друга
источник