Size: a a a

2020 June 25

TK

Tauka Kunzhol in ☄️ effector
Aleksandr Osipov
Ок, изучу как там решеается данная проблема
интересный кейс) в effing-router урл собирается как сайд эффект от стейта роутера

то есть о том куда юзер хочет мы узнает из стейта роутера, там есть createMountEvent, который как раз можно юзать для фетчинга

bindDom из effing-router/dom синхронный, но нам просто нужно добавить возможность подождать какого-то условия, скажем это условие можно описать через стор

тогда не сложно будет написать свой bindDeferredDom

export const bindDeferredDom = (router, routesList) => {
 ...
 const $guardedRouter = guard(sample(router.$, $someCondition), { filter: $someCondition })
 $guardedRouter.watch(router.go, ({ routes, params }) => {
   const path = compilePath(routes, params);
   browserHistoryPush(path);
 })
}

$someCondition можно хранить в конфиге как кастомное поле
источник

TK

Tauka Kunzhol in ☄️ effector
я сейчас в процессе пиления нормальных док, там про все это кастомное будет описано
источник

🦜

🦜 in ☄️ effector
Aleksandr Osipov
А если по пунктам, можно же составить список, что нам не нравиться в РР? (Забудем про ломание апи от версии к версии, берём текущую 5ю)
У Димы на патреоне описано
источник

🦜

🦜 in ☄️ effector
Nikolay 🦸‍♂️🍔 Morozov
Ещё вот хотелось бы сделать такое поведение: есть роут, но хотелось бы загрузить данные до перехода, только потом менять урл и показывать страницу.

То есть некий роут который работает с промисом, если собираемся на него перейти, то пока идёт загрузка, то видна текущая страница, только после резолва меняется урл и контент
Так работает роутинг в nextjs
источник

AO

Aleksandr Osipov in ☄️ effector
🦜
У Димы на патреоне описано
Я хотел другие мнения услышать :)
источник

🦜

🦜 in ☄️ effector
Aleksandr Osipov
Я хотел другие мнения услышать :)
То что у него на патреоне, это то, что я когда-то писал здесь или в реакт чате
источник

AO

Aleksandr Osipov in ☄️ effector
🦜
То что у него на патреоне, это то, что я когда-то писал здесь или в реакт чате
Посмотрел что там, слишком в общих чертах
источник

AO

Aleksandr Osipov in ☄️ effector
Вот тут в процессе дискуссии выяснили чуть детальнее кого что не устраивает и чего хотелось бы
источник

🦜

🦜 in ☄️ effector
Кстати, а у браузера есть апи, через которое бы все запросы можно было отследить?
источник

TK

Tauka Kunzhol in ☄️ effector
Nikolay 🦸‍♂️🍔 Morozov
Ещё вот хотелось бы сделать такое поведение: есть роут, но хотелось бы загрузить данные до перехода, только потом менять урл и показывать страницу.

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

тут уже ждем до коммита в стейт роутера, стейт роутера обновится только после завершения пендинга, и урл соберется синхронно после обновления стейта роутера
const preGo = createEvent();
const fxFetch = createEffect();


forward({
 from: guard(preGo, { filter: routes => routes === 'dashboard' }),
 to: fxFetch
})

forward({
 from: sample(preGo, guard(fxFetch.pending, { filter: Boolean }))
 to: router.go
})

preGo('dashboard');
источник

c⁣

createStore<🦉>... in ☄️ effector
🦜
Кстати, а у браузера есть апи, через которое бы все запросы можно было отследить?
сервис-Воркер
источник

R

Rafael 🦠 in ☄️ effector
да и вообще воркеры, не обязательно сервис
источник

R

Rafael 🦠 in ☄️ effector
с sw куча проблем, которые связаны с обновлением самого sw
источник

🦜

🦜 in ☄️ effector
createStore<🦉> ⁣
сервис-Воркер
Да, просто думал ещё как
источник

R

Ruslan 🌀 in ☄️ effector
Переслано от Ruslan 🌀
Поясню за router5:

Не зависит от реакта
Не привязан к ui
Роутинг в отдельном слое
State-first роутер
Роуты описываются в одном месте
Гибкая настройка матчинга
Древовидная структура роутов
Роутер следит за навигацией и обновляет состояние
View не хэндлит роуты, а только подписывается на роут-ноды
Возможность отмены переходов
Форвардинг переходов
Гибкая обработка "Not found"
Поддержка мидлвар, плагинов
Работает с SSR
Интегрируется с любыми либами
Легко покрыть тестами
Достаточно "взрослый"
Адекватный размер, учитывая богатые возможности
Больше 1к звезд, 17к загр./нед.
Обновляется и поддерживается

Документация:
https://router5.js.org
источник

R

Ruslan 🌀 in ☄️ effector
не изучали?
источник

🦜

🦜 in ☄️ effector
Ruslan 🌀
Переслано от Ruslan 🌀
Поясню за router5:

Не зависит от реакта
Не привязан к ui
Роутинг в отдельном слое
State-first роутер
Роуты описываются в одном месте
Гибкая настройка матчинга
Древовидная структура роутов
Роутер следит за навигацией и обновляет состояние
View не хэндлит роуты, а только подписывается на роут-ноды
Возможность отмены переходов
Форвардинг переходов
Гибкая обработка "Not found"
Поддержка мидлвар, плагинов
Работает с SSR
Интегрируется с любыми либами
Легко покрыть тестами
Достаточно "взрослый"
Адекватный размер, учитывая богатые возможности
Больше 1к звезд, 17к загр./нед.
Обновляется и поддерживается

Документация:
https://router5.js.org
интересно, почему он тогда не популярный
источник

R

Ruslan 🌀 in ☄️ effector
Rafael 🦠
с sw куча проблем, которые связаны с обновлением самого sw
пробовал эту либу от гугла?
источник

R

Rafael 🦠 in ☄️ effector
Ruslan 🌀
пробовал эту либу от гугла?
Знаю о ней, но не пробовал
источник

AO

Aleksandr Osipov in ☄️ effector
Ruslan 🌀
не изучали?
спасибо, ознакомимся
источник