采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这个state补全,只能补全最上层上面的state属性,如果要补全命名空间下的属性就无法做到,甚至还会提示没有这个属性的报错,
1. 一般组件上 不直接用state来获取数据,因为 state是响应式的Proxy数据,早期很笨的做法就是把所有模块的state数据全部集中堆到最外层的state中,当项目变大时,这会造成模块管理混乱不堪。
2. 我们提供 getter 的目的就是 让 页面避免直接store.state 来获取属性,getter很好的规避了state响应式数取值不方便的问题, 把state 数据封装到getter中,然后再从getter来取值,记住:使用 Vue3 避免直接 在组件上 store.state 来调用,,因为 state是响应式的Proxy数据
我用vue3试了一下,发现getter获取出来的也是Proxy数据呀,getter获取出来跟直接state获取出来,它们有什么实质性的区别吗
尽管取出来都是Proxy数据,但你上面不是说在组件里自动推导命名空间下的属性吗?按照我的12-6 所讲, 对getter底层 改造后 可以实现自动推导出来方法来获取state数据, 而state 数据是封装在 getter方法内部,所以你就可以不用管state的推导问题啦 ,区别相对比较复杂一些,我总结下 1. 改造 state 推导是很不方便的 【但是千万不要都直接堆到最外层的state来解决这个问题,这样会导致项目变大时,管理会异常混乱】,而改造 getter 实现推导 想对来说 方便一些 2. 底层 把 所有 模块的 state 都自动根据命名空间 挂载到了store的state上, 并且形成了响应式state, 但是是层级父子对象, 而 getter 是根据 路径/子模块的方式来加载方法的,模块路径平行,可以根据路径一下找到对应的getter方法!
明白了,感谢
登录后可查看更多问答,登录/注册
轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈
1.2k 15
909 12
1.0k 11
948 11
700 10