node package manager

flambeau

Flambeau

A lightweight, Redux-compatible Flux library with opinions:

Declarative action creators

  • No UPPERCASE_CONSTANTS. Just use an exported function to name the action, and a destructured object to document the payload.
export function addTodo({ text }) {} // No constants, self-documenting payload 
  • Better organized actions with namespacing using action sets.
  • Async action support built-in, with convenient dispatching of other actions.

Reusable reducers

  • No switch statements to handle actions, just declare a function with the same name as the action’s function, within an exported object named after the action set.
export const TodoListActions = {
  addTodo(state, { text }) {
    return state.concat({ text });
  }
}
  • Redux-style reducers instead of stores, using pure functions to allow clear data flow and immutability.
  • Reusable reducers, using props to customize the initial state or response to actions.
export function getInitialState({ initialItems = [] }) {
  return {
    items: initialItems
  };
}
  • Bulk forwarding of action sets within reducers to allow easy composition of reducers, such as in collections or other hierarchies.

Reducer state encapsulation

  • Introspection methods to allow encapsulation of reducers’ internal state. This removes action creators’ knowledge of the store’s structure, allowing greater code reuse.
  • Get a consensus for async actions, such as whether something needs loading, by polling reducers using their introspection methods.

Installation

npm install flambeau --save

Documentation

Example

See the async redux demo example for a full example of introspection and the features of Flambeau.