1.0.0 • Published 6 years ago

redux-dux v1.0.0

Weekly downloads
4
License
GLWTPL
Repository
github
Last release
6 years ago

Dux for Redux

npm i --save redux-dux

This is a tiny utility for creating Redux modules.

Benefits

  • Isolates state of the module, reduce function may update only related slice of the state.
  • No need to care about action and action types, these are abstracted away.

Why

I had a need for a succinct way to define a redux module and express dependencies between modules.

Example

import { createStore, dux, update } from 'redux-dux';

const store = createStore(s => s);

const grid = dux(
    {
      setRows: (state, rows, total) => {
        return update(state, {
          rows,
          total
        });
      },
      selectRow: (state, index) => {
        return update(state, {
          selected: state.rows[index]
        });
      }
    },
    {
      rows: state => state.rows,
      total: state => state.total,
      selected: state => state.selected
    }
  );

grid.setRows([{ a: 1 }, { b: 2 }], 1000);
console.log(grid.selectors.rows(store.getState())) // [{ a: 1 }, { b: 2 }]

dux.update : function

Object immutability helper. See update-js.

Kind: static constant of dux

dux.dux(options)

Creates a Redux module.

Kind: static method of dux

ParamTypeDescription
optionsObjectset of key-value pairs, where key is an action creator name and value is a reducer function. The reducer function receives a slice of the state, corresponding to the module, and arguments passed to the action creator: (slice, ...args). The reducer function can return either a new slice or a function which receives the whole state and returns a new slice.

dux.createStore()

Creates Redux store. See createStore.md.

Kind: static method of dux