使用redux-thunk完成异步connect的第二个参数的对象写法。

redux-thunk

使用redux-thunk完成异步connect的第二个参数的对象写法。


redux-thunk它是由redux官方开发出来的redux中间件
**它的作用:**解决redux中使用异步处理方案。redux-thunk中间件可以允许在connect参数2中派发任务时返回的是一个函数,此函数形参中,redux-thunk会自动注入一个dispatch派发函数,从而让你调用dispath函数来派发任务给redux,从而实现异步处理。
在这里插入图片描述
首先使用方法:

export default createStore(
    reducer,
    composeWithDevTools(applyMiddleware(thunk))
)

用法:
说白了就是解决connect第二个参数传入一个对象时不能对其进行异步操作也方便了模块化

  • action.js模块文件
  • 返回一个对象,通过中间件函数来异步操作dispatch
export const add = (n=4) =>async dispatch =>{
    let users = await get('/api/v1/getNowPlayingFilmList?cityId=110100&pageNum=1&pageSize=10');
    console.log("users_______",users);
    dispatch({type:"add",payload:n})
}
  • connect.js文件
import * as action from  "@/store/count/countAction"
这个action就是一个对象:{add:function(){}}
***************************
注意第二个参数
export default connect(mapStateToProps, action)

在设置一个type类型的js文件;

export const ADD = "add"

在这里插入图片描述
避免过多的使用的不同的类型名。然后再去模块化。


策略模式:

完成reducer方法的改造:
又可以完成对reducer的函数的优化
各个 mutations的封装后加入状态 执行过程封装成了过程性。
说白了就是把reducer的mutations

const mutations = {
    [ADD](state,data){
        return {
            ...state,
            num:state.num+data
        }
    }
}
const reducer = (state=initState,action)=>{
    if(mutations[action.type]){
        return mutations[action.type](state,action.payload)
    }
    return state
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢*牛牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值