ioof-holdings / redux-subspace

Build decoupled, componentized Redux apps with a single global store

Home Page:https://ioof-holdings.github.io/redux-subspace/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

redux-subspace

Deprecated

This library is no longer being actively maintained.

IOOF has been slowly moving away from the ubiquitous use of Redux as a core piece of our micro-frontend architecture and have been actively replacing the usage of this library with more standard React and JavaScript patterns. Due to some technical constraints, we've also been unable to upgrade to the latest version of the library ourselves for quite some time now, further fuelling our desire to move away from this solution.

At this time, we will be ceasing all maintenance tasks and we recommend that you consider using an alternative library:

If you want to continue using this library, we encourage you to fork this repo and take over maintenance yourself.


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>
)

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!

About

Build decoupled, componentized Redux apps with a single global store

https://ioof-holdings.github.io/redux-subspace/

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:JavaScript 88.9%Language:TypeScript 11.1%