Skip to content

Latest commit

 

History

History
executable file
·
72 lines (48 loc) · 2.34 KB

redux.md

File metadata and controls

executable file
·
72 lines (48 loc) · 2.34 KB

Redux

If you haven't worked with Redux, it's highly recommended (possibly indispensable!) to read through the (amazing) official documentation and/or watch this free video tutorial series.

Usage

See above! As minimal as Redux is, the challenge it addresses - app state management - is a complex topic that is too involved to properly discuss here.

You can attach a dynamic reducer to a component whether it's a regular component or a component that will be loaded dynamically. Dynamic means that it will be injected when the component it attached to is mounted. In your component's index.js:

import injectReducer from 'utils/injectReducer';
import reducer from './reducer';

// ...

export function mapDispatchToProps(dispatch) {
  // ...
}

const mapStateToProps = createStructuredSelector({
  // ...
});

const withConnect = connect(mapStateToProps, mapDispatchToProps);

const withReducer = injectReducer({ key: 'yourcomponent', reducer });

export default compose(
  // Put `withReducer` before `withConnect` 
  withReducer,
  withConnect,
)(YourComponent);

You don't need to do it by hand, a container generator will generate everything that's necessary.

Removing redux

There are a few reasons why we chose to bundle redux with React Boilerplate, the biggest being that it is widely regarded as the current best Flux implementation in terms of architecture, support and documentation.

You may feel differently! This is completely OK :)

Below are a few reasons you might want to remove it:

I'm just getting started and Flux is hard

You're under no obligation to use Redux or any other Flux library! The complexity of your application will determine the point at which you need to introduce it.

Here are a couple of great resources for taking a minimal approach:

It's overkill for my project!

See above.

I prefer (Alt|MobX|SomethingElse)!

React Boilerplate is a baseline for your app: go for it!

If you feel that we should take a closer look at supporting your preference out of the box, please let us know.