This is a library to help build decoupled, componentized Redux apps that share a single global store.
npm install --save redux-subspace react-redux-subspace
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>
)
redux-subspace
: The core package for Redux Subspacereact-redux-subspace
: React bindings compatible withreact-redux
redux-subspace-loop
: Utilities for integrating withredux-loop
redux-subspace-observable
: Utilities for integrating withredux-observable
redux-subspace-saga
: Utilities for integrating withredux-saga
redux-subspace-wormhole
: Middleware for exposing additional state to subspaces
When upgrading to version 2 of Redux Subspace, refer to the migration guide to work through all the breaking changes.
- MelbJS presentation that launched this library - Scaling React and Redux at IOOF.
- Web Developer 42˚ presentation about Micro-Frontends - From Monolith to Micro-Frontends
Thanks goes to these wonderful people (emojis):
This project follows the all-contributors specification. Contributions of any kind are welcome!