Redux 使用 compose 和中间件增强 store(可视化)

使用过redux的小伙伴都知道store的创建很简单

import { createStore } from 'redux'
import rootReducer from './reducers'
let store = createStore(rootReducer )

这样就创建好了,但实际开发中这并不满足我们的开发需求,这时候我们就要对store进行增强,redux给我提供了一个compose的方法来对store增强

第一种写法、
import { createStore, applyMiddleware, compose } from 'redux' //applyMiddleware用来合并多个中间件,逗号隔开
import thunk from 'redux-thunk' //可以在action 里传入 dispatch getState
import { createLogger } from 'redux-logger' // 调用日志打印方法 collapsed是让action折叠,看着舒服点
import { composeWithDevTools } from 'redux-devtools-extension' //redux的可视化工具,谷歌的应用商城工具
import rootReducer from '../reducers' //已经写好的reducers函数

let finalCreateStore
if (process.env.NODE_ENV === 'production') {  //这里判断项目环境,正式的话打印的,和可视化的中间件可以去掉
  finalCreateStore = compose(applyMiddleware(thunk))(createStore)
} else if (window.__REDUX_DEVTOOLS_EXTENSION__) { //检查到有redux可视化工具就使用
  finalCreateStore = compose(
    applyMiddleware(thunk, createLogger()),
    composeWithDevTools()
  )(createStore)
} else {
  finalCreateStore = compose(applyMiddleware(thunk, createLogger()))(
    createStore
  )
}

export default function configureStore(initialState) {
  return finalCreateStore(rootReducer, initialState) //创建store,和中间件,在index.js里引用调用configureStore()方法
}


第二种写法、

import { createStore, applyMiddleware } from 'redux' //applyMiddleware用来合并多个中间件,逗号隔开
import thunk from 'redux-thunk' //可以在action 里传入 dispatch getState
import { createLogger } from 'redux-logger' // 调用日志打印方法 collapsed是让action折叠,看着舒服点
import { composeWithDevTools } from 'redux-devtools-extension' //redux的可视化工具,谷歌的应用商城工具
import rootReducer from '../reducers' //已经写好的reducers函数

let finalCreateStore
if (process.env.NODE_ENV === 'production') {  //这里判断项目环境,正式的话打印的,和可视化的中间件可以去掉
  finalCreateStore = [thunk]
} else if (window.__REDUX_DEVTOOLS_EXTENSION__) { //检查到有redux可视化工具就使用
  finalCreateStore =[thunk, createLogger()]
} else {
  finalCreateStore = [thunk, createLogger()]
}
let store = createStore(
  rootReducer ,
  composeWithDevTools(
  applyMiddleware(...finalCreateStore)
  )
)
export default store 


import { createLogger } from ‘redux-logger’ 的实际效果

在这里插入图片描述
在这里插入图片描述
每触发一个action,控制台都会打印出对应的action,以及先后顺序,store里值的变化。


==import { composeWithDevTools } from ‘redux-devtools-extension’ ==插件的效果
先去应用商城安装这个插件 (redux devtools)
在这里插入图片描述
在这里插入图片描述
展示效果就是这样,一幕了然。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值