Size: a a a

2020 October 11

l

lllla in ☄️ effector
А можешь мне объяснить еще один момент?

function App() {
 const routes = [MainPage, OrderPage];

 for (const route of routes) {
   renderRoute($path, route);
 }
}


вот у меня есть цикл, где я пробрасываю все свои роуты.

Вот пример страницы OrderPage:

co
nst OrderPage: Page<string> = {
 visible: (path) => path.startsWith('/order/'),
 fn() {
   h('p', {
     text: 'Hello, from order page',
   });
 },
};

Я воспользовался функцией renderRoute (из примера на codesandbox).

Как мне пробросить в fn({state}) текущий роут, чтобы я смог вытащить параметр из url? (/order/:id)
источник

l

lllla in ☄️ effector
function renderRoute(source: Store<string>, { visible, childState: childStateFn, state: stateFn, fn }) {
 route({
   source,
   visible,
   fn({ store }) {
     let state;
     let childState;

     if (stateFn) state = store.map(stateFn);
     if (childStateFn) childState = store.map(childStateFn);

     fn({
       state,
       childState,
     });
   },
 });
}
источник

l

lllla in ☄️ effector
Я не могу понять, что такое stateFn и childStateFn. как им воспользоваться?
источник

l

lllla in ☄️ effector
ааа
источник

l

lllla in ☄️ effector
пооонял
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
😄
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
хорошо)
источник

l

lllla in ☄️ effector
Блин, капец)
источник

🚀🚀

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

ab

a b in ☄️ effector
А в форесте сейчас классы элементу можно задавать только через строковый аттрибут?
источник

ab

a b in ☄️ effector
Бывает возникает ситуация условных классов
источник

ab

a b in ☄️ effector
Насколько я понимаю, сейчас только если стор маппить
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
a b
Насколько я понимаю, сейчас только если стор маппить
ага
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
a b
Бывает возникает ситуация условных классов
лучше через data-атрибуты

h('div', {
 data: {visible}
})

div[data-visible] {

}
источник

l

lllla in ☄️ effector
@ZeroBias а можно как-то фаерить ивент на страницах, что сейчас этот роут активен?
На сколько я понял, сначала все роуты создаются, а потом скрываются.
Не могу так же понять, почему у меня stateFn фаерится два раза (всего у меня два роута)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
lllla
@ZeroBias а можно как-то фаерить ивент на страницах, что сейчас этот роут активен?
На сколько я понял, сначала все роуты создаются, а потом скрываются.
Не могу так же понять, почему у меня stateFn фаерится два раза (всего у меня два роута)
ты изначально знаешь когда роут активен, так как значение видимости вычисляется из source
источник

l

lllla in ☄️ effector
🚀🔬 🚀🔬🚀🔬
ты изначально знаешь когда роут активен, так как значение видимости вычисляется из source
так и есть. но, например:

fn({state}) {
 sample({ source: state, target: fx });
})
не отработает, да?
источник

l

lllla in ☄️ effector
даже если на роут я перейду
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
lllla
так и есть. но, например:

fn({state}) {
 sample({ source: state, target: fx });
})
не отработает, да?
отработает когда state поменяется, тут как обычно
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
сторы апдейтятся когда их предыдущее значение не проходит проверку на строгое равенство (===)
источник