redux-byid
TypeScript icon, indicating that this package has built-in type declarations

0.4.5 • Public • Published

redux-byid Build Status

A helper for redux that allows to distribute an action to one specific part of a map of similar "things".

This blog post details the background of this library.

Usage

npm install --save redux-byid

You can then define a "by-id" state:

const { byId } = require('redux-byid');

/**
 * Reducer for a single item
 */
function itemReducer(state, action) {
    switch (action.type) {
        case 'item/added':
            return {id: action.item_id, data: action.data};
        case 'item/updated':
            return {id: action.item_id, data: action.updated};
        case 'item/deleted':
            // Item is deleted, return undefined. byId will drop out the state.
            return undefined;
        default:
            return state;
    }
}

/**
 * Actual reducer, produces a map of item id -> item reducer.
 */
const reducer = byId(action => action.item_id, itemReducer);

License

This software is licensed under the Apache 2 license, quoted below.

Copyright 2011-2019 Collaborne B.V. <http://github.com/Collaborne/>

Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.4.5
    2
    • latest

Version History

Package Sidebar

Install

npm i redux-byid

Weekly Downloads

14

Version

0.4.5

License

Apache-2.0

Unpacked Size

45.6 kB

Total Files

16

Last publish

Collaborators

  • collaborne-team