怎么在.vue中获取异步数据
来源:14-1 课程总结
见信
2021-01-04
interface games: ListProp<
ListProp<{
teams: ListProp<GameProp>,
loadeadTemid:string[]
}>
>
state:{
games:{}
}
// mutation内初始化数据列表
state.games[queryYear] = { ...state.games[queryYear] }
state.games[queryYear][queryMonth] = { ...state.games[queryYear][queryMonth] }
state.games[queryYear][queryMonth][teamId] = { ...state.games[queryYear][queryMonth][teamId] }
老师,我嵌套泛型俄罗斯套娃了,我的数据已经打平成对象了,但是初始化数据时我吐了, 不这样初始化就会报错
当时我做的思路是,做成日历的形式,根据日期,将数据插入日历中,数据结构为 games[年份][月份][队伍id],获取到该队伍该月的赛程,将数据缓存下来。
getters: {
getTeamSchedule: (state) => (teamid:string, year:number, month:number) => {
if (state.games[year][month]) {
return state.games[year][month][teamid]
}
}
}
我使用计算属性,调用state的过滤器,过滤数据,state.games[year]的值是undefined,所以一直在报无法从undefined上读取属性的错,这种我该怎么解决?
还有一点就是,我派发action进行异步调用时,无论是在onmounted中还是就是在setup中都是一样的报错,数据的确是放入了store.state中,但是我就是无法在.vue文件中取出。
写回答
2回答
-
如果你使用Vuex异步请求,光使用computed计算属性是不够的,因为Vuex存在延迟,也就是说你这边获取到了数据computed也不会即时更新。
常规做法是使用watch或者watchEffect监听你这个计算属性,从而达到异步数据接收,或者干脆直接在watchEffect里监听state变化。
042021-01-07 -
张轩
2021-01-05
同学你好 由于没有源代码 所以只能按照大体思路回答一下
第一个问题,你应该先判断 state.games[year] 是否存在,然后再判断 state.games[year][month] 是否存在。因为第一个数据结构在开始就是是 undefined 啊。
第二个问题 发送 action 的时候报了什么错误?不太清楚你说的无法取出是什么意思。请提供详细一点的错误信息哈
112021-01-05
相似问题
文章详情页刷新后数据丢失
回答 1
封装请求的数据刷新怎么获取
回答 4