Size: a a a

2020 September 18

V

Vasili in ☄️ effector
у меня есть эффект, который проверяет токен, и есть стор с результатом true/false и я не хочу повторно делать проверку если какой-то компонент маунтится и ее запрашивает
источник

🦜

🦜 in ☄️ effector
Vasili
у меня есть эффект, который проверяет токен, и есть стор с результатом true/false и я не хочу повторно делать проверку если какой-то компонент маунтится и ее запрашивает
Почему компонент должен что-то о токене знать?
источник

🦜

🦜 in ☄️ effector
Тем более при маунте
источник

V

Vasili in ☄️ effector
хороший вопрос 😂
источник

V

Vasili in ☄️ effector
возможно я не должен этого хотеть
источник

DD

Dmitry Dudin in ☄️ effector
Ребята, вот в patronum есть delay, trottle у них есть параметр timeout. Этот таймаут может быть строром?
источник

V

Vasili in ☄️ effector
Dmitry Dudin
Ребята, вот в patronum есть delay, trottle у них есть параметр timeout. Этот таймаут может быть строром?
https://www.npmjs.com/package/patronum#delay
// `timeout` also supports (payload) => number and Store<number>
источник

V

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

NT

Nikita Tkachuk in ☄️ effector
а почему в типах attach нужно указывать тип sourse как Store<Type> вместо просто Type ?)
const removeNextContractFx = attach<
 void,
 { nextRecord: Store<CompanyAccountContract>, companyId: Store<number> },
 typeof removeContractFx
>({
 source: { nextRecord: $nextRecord, companyId: $companyId },
 effect: removeContractFx,
 mapParams: (_, { companyId, nextRecord: { accountId, recordId } }) => ({
   companyId,
   accountId,
   recordId,
 }),
})
источник

V

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

V

Vasili in ☄️ effector
Написал небольшой хелпер чтобы иметь совместимость со svelte/store...

https://svelte.dev/docs#Store_contract

import type { Writable } from "svelte/store";
import type { Store } from "effector"
import { createEvent } from "effector";

export function asSvelteStore<T>(store: Store<T>) {
   const set = createEvent<T>();

   const newStore = store.map(x => x).on(set, alwaysNew);

   const svelteStore: Writable<T> = {
       ...newStore,
       set,
       update(updater) {
           set(updater(newStore.getState()))
       }
   };

   return svelteStore;
}
источник

ф

фильтруй мысли... in ☄️ effector
Vasili
А можно ли как-нибудь сделать одноразовый эффект? Типа синглтон...
guard({
 source: event,
 filter: createStore(true)
   .on(event, () => false)
 target: effect
})
источник

V

Vasili in ☄️ effector
Прикольно
источник

DD

Dmitry Dudin in ☄️ effector
Vasili
так что да
куда я смотрел спрашивается… 🙂
источник

DS

Dmitriy Shuleshov in ☄️ effector
Vasili
Написал небольшой хелпер чтобы иметь совместимость со svelte/store...

https://svelte.dev/docs#Store_contract

import type { Writable } from "svelte/store";
import type { Store } from "effector"
import { createEvent } from "effector";

export function asSvelteStore<T>(store: Store<T>) {
   const set = createEvent<T>();

   const newStore = store.map(x => x).on(set, alwaysNew);

   const svelteStore: Writable<T> = {
       ...newStore,
       set,
       update(updater) {
           set(updater(newStore.getState()))
       }
   };

   return svelteStore;
}
а зачем?
источник

DS

Dmitriy Shuleshov in ☄️ effector
источник

V

Vasili in ☄️ effector
потому что effector не предоставляет метод set я так понимаю
источник

V

Vasili in ☄️ effector
а теперь сделайте <select bind:value={$store}/>
источник

ф

фильтруй мысли... in ☄️ effector
фильтруй мысли
guard({
 source: event,
 filter: createStore(true)
   .on(event, () => false)
 target: effect
})
запустить один раз (once)
https://share.effector.dev/8cnNKPis
источник

ф

фильтруй мысли... in ☄️ effector
для истории
источник