迁移到redux的准备工作
截至目前我们已经学会如何用webpack和babel搭建react应用,构建类组件和函数型组件并处理state,添加功能。然而这只是基本满足一个小型应用的需求,随着app的增长,处理数据和行为会越来越吃力,这就是要引入redux的必要性。
那么redux如何处理数据?首先,redux给你的app一个单一的state对象,与flux等根据view来划分为多个state对象正好相反。你可能会有疑问,一个单一的对象来处理一个复杂的app岂不是非常复杂?redux采用的方法是把数据处理分为reducer functions、action creators和actions然后组合在一起工作流线型的处理数据。
1. 首先安装必须的依赖
首先安装 redux and react-redux
npm install --save redux npm install --save react-redux
然后安装 redux middleware,这里就先安装 redux-logger,它的功能是帮助我们开发。
npm install --save redux-logger
还有一些常用的中间件,比如 redux-thunk and redux-promise, 但是在我们的这个项目中暂时先不需要,可以自行去github了解。
2. 构建
使用redux构建react应用一般都有一个标准的模板,可能不同模板形式上有区别,但是思想都是一样的,下面就先按照一种文件结构来构建。
首先我们在src中新建一个文件夹redux,然后在其中新建一个文件configureStore.js,添加以下代码:
import { createStore, applyMiddleware, combineReducers } from 'redux'; import createLogger from 'redux-logger';
createStore 是由redux提供的用来初始化store的函数, applyMiddleware是用来添加我们需要的中间件的。
combineReducers 用来把多个reducers合并为一个单一实体。
createLogger 就是我们这里唯一使用的一个中间件,可以console出每一个action后数据的详细处理过程,给调试带来了很大方便。
然后添加下面代码:
const loggerMiddleware = createLogger(); // initialize logger const createStoreWithMiddleware = applyMiddleware( loggerMiddleware)(createStore); // apply logger to redux
这里暂时没有完成,需要后面的模块写完了再导入到这里继续来完成。
3. 模块Modules
在 src/redux/ 新建一个文件夹 modules。在这个文件夹中我们将存放所有的reducers,action creators和constants。这里我们使用的redux组织结构叫做ducks,思想就是把相关的reducers,action creators和constants都放在一个单独的文件中,而不是分开放在多个文件中,这样修改一个功能时候直接在一个文件中修改就可以。