Redux-thunk 中间件的启用方法

Redux thunk

thunk 是一个 Redux 的中间件(Middleware)。

1. 添加和配置thunk到项目

https://github.com/reduxjs/redux-thunk

2. 应用thunk

//store & thunk
import { createStore, applyMiddleware, compose } from 'redux';
import reducer from './reducer';
import thunk from 'redux-thunk';

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({}):compose;

const enhancer = composeEnhancers(
    applyMiddleware(thunk),
);

const store = createStore(
    reducer,
    enhancer
);

上述代码同时引入了两个中间件:redux dev tools 和 redux thunk。

应用thunk后,action可以是一个函数,函数里面是实现异步操作(比如数据请求)的代码。当这样的action通过dispatch()传给了store时,store识别到action是一个函数,然后自动执行该函数;

需要注意的是,action中往往还需要在异步请求数据之后修改store中的数据(axios.get().then()),这就又需要调用store.dispatch()方法。好在action返回的函数中可以传入dispatch作为参数,因此可以直接在异步请求代码之后修改数据:

//thunk,action是一个函数
export const getTodoList = () => {
  return (dispatch) => {                          //返回一个发送异步请求的函数
    axios.get('./list.json').then((res)=>{
      const data = res.data;
      const action = initListAction(data);
      dispatch(action);
    })
  }
}

有了thunk,我们实现了在actionCreators.js中编写异步请求,不用把这些代码堆砌在组件中,避免组件代码过于臃肿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值