An open API service indexing awesome lists of open source software.

https://github.com/caiogondim/redux-whenever.js

:clock430: Redux store subscriber for specific state change
https://github.com/caiogondim/redux-whenever.js

Last synced: 2 months ago
JSON representation

:clock430: Redux store subscriber for specific state change

Awesome Lists containing this project

README

        

# redux-whenever


Travis CI Codecov


Subscribe to a state subtree (or leaf) and run callbacks `whenever` it evaluates to a given value.

## Installation

```
npm install --save redux-whenever
```

## Usage

### Adding subscriber

```js
const whenever = require('redux-whenever')
const redux = require('redux')

// Pass `whenever` as an enhancer
const store = redux.createStore(reducer, whenever)

// Pass the state selector you are interested in as a string.
// `callback` will execute only when `player.isReady` becames `true`
store.whenever('player.isReady', true, (curState, prevState) => {
// Your magic here
})
```

### Removing subscriber
```js
const unsubscribe = store.whenever('player.isReady', true, callback)
unsubscribe() // Removes previously added listener
```

## API

### `const unsubscribe = store.whenever(selector, assertion, callback)`
Returns a function that, if called, removes the added subscriber.

#### `selector`
- type: `String|Function`

Should return a piece of the state tree

#### `assertion`
- type: `String|Number|Object|Function`

If a function, it will be executed. If not, it's equality will be compared against current state.

#### `callback`
- type: `Function`

## Credits
- Icon by Scott Lewis from the Noun Project

---

[caiogondim.com](https://caiogondim.com)  · 
GitHub [@caiogondim](https://github.com/caiogondim)  · 
Twitter [@caio_gondim](https://twitter.com/caio_gondim)