Effector

Effector

  • Docs
  • Try
  • API
  • Blog
  • GitHub

›effector

effector

  • API Reference
  • createEvent
  • Event
  • createEffect
  • Effect
  • createStore
  • Store
  • sample
  • createDomain
  • Domain
  • combine
  • createStoreObject
  • createApi
  • restore
  • forward
  • fromObservable
  • merge
  • split

effector-react

  • API Reference
  • createStoreConsumer
  • createComponent
  • createGate
  • useGate
  • useStore
  • Gate

effector-vue

  • API Reference
  • VueEffector
  • ComponentOptions
  • Vue
Edit

createEffect(name?)

Creates an effect

Arguments

  1. name? (string): Effect name
  2. params? (Params): Setup effect
    • handler (Function): thunk to handle effect calls, also can be set with use(thunk)

Returns

(Effect): A container for async function.

Example

const getUser = createEffect('get user', {
  handler: params => fetch(`https://example.com/get-user/${params.id}`)
    .then(res => res.json())
})

// OR
getUser.use(params => {
  return fetch(`https://example.com/get-user/${params.id}`)
    .then(res => res.json())
})

const users = createStore([]) // <-- Default state
  // add reducer for getUser.done event (fires when promise resolved)
  .on(getUser.done, (state, {result: user, params}) => [...state, user])

// subscribe to promise resolve
getUser.done.watch(({result, params}) => {
  console.log(params) // {id: 1}
  console.log(result) // resolved value
})

// subscribe to promise reject (or throw)
getUser.fail.watch(({error, params}) => {
  console.error(params) // {id: 1}
  console.error(error) // rejected value
})

// you can replace function anytime
getUser.use(() => promiseMock)

// call effect with your params
getUser({id: 1})

const data = await getUser({id: 2}) // handle promise
← EventEffect →
Effector
Docs
Getting StartedAPI Reference
Community
User ShowcaseStack OverflowGitter
More
GitHubStar
Copyright © 2019 zerobias