Redux

Redux

  • Getting Started
  • API
  • FAQ
  • Github
  • Need help?

›FAQ

Introduction

  • Getting Started with Redux
  • Installation
  • Motivation
  • Core Concepts
  • Three Principles
  • Prior Art
  • Learning Resources
  • Ecosystem
  • Examples

Basic Tutorial

  • Basic Tutorial: Intro
  • Actions
  • Reducers
  • Store
  • Data flow
  • Usage with React
  • Example: Todo List

Advanced Tutorial

  • Advanced Tutorial: Intro
  • Async Actions
  • Async Flow
  • Middleware
  • Usage with React Router
  • Example: Reddit API
  • Next Steps

Recipes

  • Recipes: Index
  • Configuring Your Store
  • Usage With TypeScript
  • Migrating to Redux
  • Using Object Spread Operator
  • Reducing Boilerplate
  • Server Rendering
  • Writing Tests
  • Computing Derived Data
  • Implementing Undo History
  • Isolating Redux Sub-Apps
  • Using Immutable.JS with Redux
  • Code Splitting
  • Structuring Reducers

    • Structuring Reducers: Intro
    • Prerequisite Concepts
    • Basic Reducer Structure
    • Splitting Reducer Logic
    • Refactoring Reducers Example
    • Using combineReducers
    • Beyond combineReducers
    • Normalizing State Shape
    • Updating Normalized Data
    • Reusing Reducer Logic
    • Immutable Update Patterns
    • Initializing State

FAQ

  • FAQ Index
  • General
  • Reducers
  • Organizing State
  • Store Setup
  • Actions
  • Immutable Data
  • Code Structure
  • Performance
  • Design Decisions
  • React Redux
  • Miscellaneous

Other

  • Glossary
  • Troubleshooting
  • Feedback

API Reference

  • API Reference
  • createStore
  • Store
  • combineReducers
  • applyMiddleware
  • bindActionCreators
  • compose

Redux FAQ

Table of Contents

  • General
    • When should I learn Redux?
    • When should I use Redux?
    • Can Redux only be used with React?
    • Do I need to have a particular build tool to use Redux?
  • Reducers
    • How do I share state between two reducers? Do I have to use combineReducers?
    • Do I have to use the switch statement to handle actions?
  • Organizing State
    • Do I have to put all my state into Redux? Should I ever use React's setState()?
    • Can I put functions, promises, or other non-serializable items in my store state?
    • How do I organize nested or duplicate data in my state?
    • Should I put form state or other UI state in my store?
  • Store Setup
    • Can or should I create multiple stores? Can I import my store directly, and use it in components myself?
    • Is it OK to have more than one middleware chain in my store enhancer? What is the difference between next and dispatch in a middleware function?
    • How do I subscribe to only a portion of the state? Can I get the dispatched action as part of the subscription?
  • Actions
    • Why should type be a string, or at least serializable? Why should my action types be constants?
    • Is there always a one-to-one mapping between reducers and actions?
    • How can I represent “side effects” such as AJAX calls? Why do we need things like “action creators”, “thunks”, and “middleware” to do async behavior?
    • What async middleware should I use? How do you decide between thunks, sagas, observables, or something else?
    • Should I dispatch multiple actions in a row from one action creator?
  • Immutable Data
    • What are the benefits of immutability?
    • Why is immutability required by Redux?
    • What approaches are there for handling data immutability? Do I have to use Immutable.JS?
    • What are the issues with using JavaScript for immutable operations?
  • Using Immutable.JS with Redux
    • Why should I use an immutable-focused library such as Immutable.JS?
    • Why should I choose Immutable.JS as an immutable library?
    • What are the issues with using Immutable.JS?
    • Is Immutable.JS worth the effort?
    • What are some opinionated Best Practices for using Immutable.JS with Redux?
  • Code Structure
    • What should my file structure look like? How should I group my action creators and reducers in my project? Where should my selectors go?
    • How should I split my logic between reducers and action creators? Where should my “business logic” go?
    • Why should I use action creators?
    • Where should websockets and other persistent connections live?
  • Performance
    • How well does Redux “scale” in terms of performance and architecture?
    • Won't calling “all my reducers” for each action be slow?
    • Do I have to deep-clone my state in a reducer? Isn't copying my state going to be slow?
    • How can I reduce the number of store update events?
    • Will having “one state tree” cause memory problems? Will dispatching many actions take up memory?
    • Will caching remote data cause memory problems?
  • Design Decisions
    • Why doesn't Redux pass the state and action to subscribers?
    • Why doesn't Redux support using classes for actions and reducers?
    • Why does the middleware signature use currying?
    • Why does applyMiddleware use a closure for dispatch?
    • Why doesn't combineReducers include a third argument with the entire state when it calls each reducer?
    • Why doesn't mapDispatchToProps allow use of return values from getState() or mapStateToProps()?
  • React Redux
    • Why should I use React-Redux?
    • Why isn't my component re-rendering, or my mapStateToProps running?
    • Why is my component re-rendering too often?
    • How can I speed up my mapStateToProps?
    • Why don't I have this.props.dispatch available in my connected component?
    • Should I only connect my top component, or can I connect multiple components in my tree?
  • Miscellaneous
    • Are there any larger, “real” Redux projects?
    • How can I implement authentication in Redux?
Last updated on 12/16/2018
← Initializing StateGeneral →
  • Table of Contents
Redux
Docs
Getting StartedCore ConceptsBasicsAdvanced
Community
Stack OverflowDiscord
More
GitHubStar
Copyright (c) 2015-present Dan Abramov and the Redux documentation authors.
Some icons copyright Font Awesome and Noun Project (Hassan ali, ProSymbols)