Size: a a a

2020 November 09

V

Vetro in ☄️ effector
sample мне с типами ругаться начал
источник

V

Vetro in ☄️ effector
к сожалению
источник

R

Rafael 🦠 in ☄️ effector
Vetro
sample мне с типами ругаться начал
Эм
источник

R

Rafael 🦠 in ☄️ effector
Покажи
источник

V

Vetro in ☄️ effector
источник

R

Rafael 🦠 in ☄️ effector
Vetro
А код покажи
источник

V

Vetro in ☄️ effector
const fireEventFxInternal = appDomain.createEffect<
 { env: Environment } & (
   | {
       type: string;
       category: string;
       tool: 'ga';
     }
   | {
       type: string;
       tool: 'ym';
       options?: CommonOptions;
     }
 ),
 void
>(async (req) => {
 switch (req.tool) {
   case 'ga': {
     ReactGa.event({
       category: req.category,
       action: req.type,
     });
     break;
   }
   case 'ym': {
     ((<any>window)[
       `yaCounter${req.env.metrikaID}`
     ] as YandexMetrika).reachGoal(req.type, req?.options);
   }
 }
});

export const fireEventFx = attach<
 | {
     type: string;
     category: string;
     tool: 'ga';
   }
 | {
     type: string;
     tool: 'ym';
     options?: CommonOptions;
   },
 Store<Environment>,
 typeof fireEventFxInternal
>({
 effect: fireEventFxInternal,
 source: $envStore,
 mapParams: (params, data) => {
   return {
     ...params,
     env: data,
   };
 },
});

sample({
 source: $envStore,
 clock: loginEffect.doneData,
 fn: (source, clock) => ({
   type: 'reachGoal',
   tool: 'ym',
   options: {
     params: {
       UserID: clock.user_id,
     },
   },
 }),
 target: fireEventFx,
});
источник

V

Vetro in ☄️ effector
Type 'string' is not assignable to type '"ga" | "ym"'.
источник

V

Vetro in ☄️ effector
расширяет он короче почему-то то, что я передаю в fn
источник

V

Vetro in ☄️ effector
разбираться сейчас не очень охота, поэтому оставлю с форвардом, но сэмпл раскурю обязательно :)
источник

V

Vetro in ☄️ effector
Если у меня определено несколько forward'ов с сурсом из одного и того же эффекта - то выполняться они будут в порядке декларации?
источник

V

Vetro in ☄️ effector
Ну или сэмпл, не важно
источник

V

Vetro in ☄️ effector
Важен порядок исполнения

Или для этого мне нужно чейнить форварды разных эффектов, чтоб "наверняка"?
источник

🦜

🦜 in ☄️ effector
Vetro
Важен порядок исполнения

Или для этого мне нужно чейнить форварды разных эффектов, чтоб "наверняка"?
разделять фазы
источник

🦜

🦜 in ☄️ effector
но если ты хочешь знать порядок
источник

🦜

🦜 in ☄️ effector
Vetro
Важен порядок исполнения

Или для этого мне нужно чейнить форварды разных эффектов, чтоб "наверняка"?
источник

DS

Dmitriy Shuleshov in ☄️ effector
Vetro
Важен порядок исполнения

Или для этого мне нужно чейнить форварды разных эффектов, чтоб "наверняка"?
Если важен порядок то ты написал что то неверно. Апи эффектора проектировалось именно для того что б избежать хрупкого кода
источник

V

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

соответственно

loginFx -> addUserParamsFx -> fireEventFx

и при этом надо чтобы каждый эффект после логина тянул в себе значение из одного и того же стора
источник

V

Vetro in ☄️ effector
А ну хотя можно же присосаться к done а не к doneData, чтобы получить параметры addUserParamsFx
источник

V

Vetro in ☄️ effector
точно :)
источник