业务需求:切换日期重绘坐标图
错误案例
开始是这样设计的
computed: {
...mapState(["PublicDateList"]),
},
methods: {
...mapActions(["PublicNumDaily"]),
handleChange: function () {
// 设计回调函数,在数据加载完成之后执行函数,
this.PublicNumDaily(Number(this.time),Number(this.time))
},
// 重新绘制
paint: function () {},
action.js
async PublicNumDaily ({commit},cur_day,cb) {
let result = await ReqPublicNumDaily(cur_day)
console.log('发送请求获取数据')
if(result.code === 0){
console.log('分发action 这是callback',data)
commit(RECEIVEDATAColletion,result.data)
cb && cb()
}
}
发现回调函数不会执行,后来打印回调函数,发现是undefined。
正确案例
上面原因分析:
vuex中调用action的时候只有第一个参数有效,所以应该把两个数据包装到一个对象中
改进
handleChange: function () {
// 设计回调函数,在数据加载完成之后执行函数,这里需要注意action只能传一个参数,所以要把回调函数包装进去
let data = {
cur_day:Number(this.time),
cb:this.paint
}
this.PublicNumDaily(data)
},
async PublicNumDaily ({commit},data) {
let {cur_day,cb} = data
let result = await ReqPublicNumDaily(cur_day)
console.log('发送请求获取数据')
if(result.code === 0){
console.log('分发action 这是callback',data)
commit(RECEIVEDATAColletion,result.data)
cb && cb()
}
}
参考博客:
大佬