Skip to content
This repository has been archived by the owner on Jan 27, 2021. It is now read-only.

Latest commit

 

History

History

redux-dynostore-redux-saga

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

@redux-dynostore/redux-saga

Deprecated

This library is no longer being actively maintained.

IOOF has been slowly moving away from the ubiquitous use of Redux as a core piece of our micro-frontend architecture and have been actively replacing the usage of this library with more standard React and JavaScript patterns. Due to some technical constraints, we've also been unable to upgrade to the latest version of the library ourselves for quite some time now, further fuelling our desire to move away from this solution.

At this time, we will be ceasing all maintenance tasks and we recommend that you consider using an alternative library:

If you want to continue using this library, we encourage you to fork this repo and take over maintenance yourself.


build status npm version npm downloads License: BSD-3-Clause

Enhancer and handler for dynamically running sagas.

Usage

Include dynamic enhancer with redux-dynostore:

import dynostore from '@redux-dynostore/core'
import { dynamicSagas } from '@redux-dynostore/redux-saga'

const sagaMiddleware = createSagaMiddleware()

const store = createStore(reducer, compose(
  applyMiddleware(sagaMiddleware),
  dynostore(dynamicSagas(sagaMiddleware))
)

Run the saga when the dynamic component mounts:

import dynamic from '@redux-dynostore/react-redux'
import { runSaga } from '@redux-dynostore/redux-saga'

export default dynamic('identifier', runSaga(mySaga))(MyComponent)

Manually running sagas

If you aren't using react, or want to run a saga outside of the component lifecycle, the store now has an runSagas function that can be used to run sagas if you only have access to the store:

store.runSagas({ dynamicSaga })

Multiple sagas can be run as well:

store.runSagas({ dynamicSaga1, dynamicSaga2 })

Sagas can also be provided in a nested structure, but this only provides simplified identifier creation:

store.runSagas({ 'some/path/to': dynamicSaga })
store.runSagas({
  some: {
    path: {
      to: {
        dynamicSaga
      }
    }
  }
})

Both the above examples are equivalent to calling:

store.runSagas({ 'some.path.to': dynamicSaga })

Cancelling sagas

If you need to dynamically cancel a saga, the cancelSagas function that can be used:

store.cancelSagas(['dynamicSaga'])

Multiple sagas can be cancelled at the same time as well:

store.cancelSagas(['dynamicSaga1', 'dynamicSaga2'])

Note: only sagas that were added using an the runSagas function can be cancelled. Static sagas cannot be cancelled.