/redux-subspace

Build decoupled, componentized Redux apps with a single global store

Primary LanguageJavaScriptBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

redux-subspace

npm version npm downloads License: BSD-3-Clause

All Contributors PRs Welcome

Watch on GitHub Star on GitHub

This is a library to help build decoupled, componentized Redux apps that share a single global store.

Installation

npm install --save redux-subspace react-redux-subspace

Quick Start

import React from 'react'
import { createStore, combineReducers } from 'redux'
import { Provider } from 'react-redux'
import { namespaced } from 'redux-subspace'
import { SubspaceProvider } from 'react-redux-subspace'
import { TodoApp, todoReducer } from './todoApp'
import { CounterApp, counterReducer } from './counterApp'

const rootReducer = combineReducers({
  todo: todoReducer
  counter1: namespaced('counter1')(counterReducer),
  counter2: namespaced('counter2')(counterReducer)
})

const store = createStore(rootReducer)

const App = () => (
  <Provider store={store}>
    <SubspaceProvider mapState={(state) => state.todo}>
      <TodoApp />
    </SubspaceProvider>
    <SubspaceProvider mapState={(state) => state.counter1} namespace="counter1">
      <CounterApp />
    </SubspaceProvider>
    <SubspaceProvider mapState={(state) => state.counter2} namespace="counter2">
      <CounterApp />
    </SubspaceProvider>
  </Provider>
)

Documentation

Packages

Upgrading From Version 1 to Version 2

When upgrading to version 2 of Redux Subspace, refer to the migration guide to work through all the breaking changes.

Media

Contributors

Thanks goes to these wonderful people (emojis):

Michael Peyper
Michael Peyper

๐Ÿ’ฌ ๐Ÿ› ๐Ÿ’ป ๐Ÿ“– ๐Ÿ’ก ๐Ÿค” ๐Ÿš‡ ๐Ÿ‘€ ๐Ÿ“ฆ ๐Ÿ“ข โš ๏ธ ๐Ÿ”ง
Jonathan Peyper
Jonathan Peyper

๐Ÿ’ฌ ๐Ÿ’ป ๐Ÿค” ๐Ÿ‘€ โš ๏ธ
Vivian Farrell
Vivian Farrell

๐Ÿค” ๐Ÿ“ฆ ๐Ÿ‘€ ๐Ÿ“ข
Emily Rosengren
Emily Rosengren

๐Ÿ“ข
Morgan Larosa
Morgan Larosa

๐Ÿš‡
Amit Kothari
Amit Kothari

๐Ÿ’ป ๐Ÿ’ก
Riku Rouvila
Riku Rouvila

๐Ÿ’ป ๐Ÿ“– โš ๏ธ
Michael
Michael

๐Ÿ’ป
James Adams
James Adams

๐Ÿ“–
Lee Kyles
Lee Kyles

๐Ÿ’ป โš ๏ธ
Evert Bouw
Evert Bouw

๐Ÿ’ป โš ๏ธ ๐Ÿ“– ๐Ÿ’ก
Paweล‚ Brรณd
Paweล‚ Brรณd

๐Ÿ›
majo44
majo44

๐Ÿ› ๐Ÿ’ป โš ๏ธ
Garth Newton
Garth Newton

๐Ÿ› ๐Ÿ“–
Mateusz Burzyล„ski
Mateusz Burzyล„ski

๐Ÿ”ง
psamusev
psamusev

๐Ÿ›
Jay Phelps
Jay Phelps

๐Ÿ‘€
Mark Erikson
Mark Erikson

๐Ÿ“ข
Nikita
Nikita

๐Ÿ› ๐Ÿ’ป โš ๏ธ
Conrad Buck
Conrad Buck

๐Ÿ’ป โš ๏ธ ๐Ÿ“–
travikk
travikk

๐Ÿ‘€

This project follows the all-contributors specification. Contributions of any kind are welcome!