为什么我在setup中获取store中的state是空数组?

为什么我在setup中获取store中的state是空数组?

const store = useStore()

 const newNumListComputed = computed(() => store.state.newNumList)

 newNumListComputed就是axios后的state数据

打印newNumListComputed是一个函数,函数下面有一个value

console.log(newNumListComputed);

https://img1.sycdn.imooc.com//climg/6191dd73099981e106240938.jpg

但为什么我打印newNumListComputed.value,结果确实空数组

console.log(newNumListComputed.value);

https://img1.sycdn.imooc.com//climg/6191dd820976b74406800140.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,应该是Ajax异步获取数据导致的,如果使用Vuex异步请求,只使用computed计算属性是不够的,因为Vuex存在延迟,即使获取到了数据computed也不会即时更新,不过视图是可以异步更新的,此时直接在组件中使用newNumListComputed即可,不需要通过.value获取。

如果想在js中操作异步数据的话,建议使用watch或者watchEffect监听来实现异步数据接收,代码示例如下

https://img1.sycdn.imooc.com//climg/619204cd093f94eb07790625.jpg

祝学习愉快!

  • leepulse 提问者 #1

    在watchEffect中获取到最新的数据后,在组件中要怎么使用来渲染数据呢?

    2021-11-15 15:48:11
  • 好帮手慕然然 回复 提问者 leepulse #2

    同学你好,如果在组件中使用异步数据的话,是可以得到更新的,也就是这句代码

    const newNumListComputed = computed(() => store.state.newNumList)获取到的数据,直接在组件中使用即可(注意:不需要通过.value获取),不用通过watchEffect监听(当在js中操作异步数据时,才需要监听)。

    祝学习愉快!

    2021-11-15 16:07:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师