Vuex 的问题,使用 useStore()获取到的 store,和直接 import store 有什么区别吗?

2021-11-30 17:37:36 +08:00
 shintendo

以及,在 Vue 组件以外的地方访问 store 的标准姿势是什么?

2099 次点击
所在节点    Vue.js
9 条回复
mxT52CRuqR6o5
2021-11-30 17:47:40 +08:00
大部分情况下应该是没区别的,一般都是用 useStore 吧
如果一个页面的某个组件有多个 vue 实例,又 provide 了不同的 store 时就会有区别
mxT52CRuqR6o5
2021-11-30 17:50:57 +08:00
想了一下好像不太对,不 useStore 有可能会导致不能 Reactive (不是很确定)
wxsm
2021-11-30 18:36:03 +08:00
https://next.vuex.vuejs.org/zh/guide/typescript-support.html

useStore 主要是为了解决 TypeScript 的类型问题。

> 不 useStore 有可能会导致不能 Reactive (不是很确定)

这个问题是不存在的。因为即使 useStore 也没有 reactive ,需要结合 computed 使用。
lujjjh
2021-11-30 18:38:42 +08:00
没有用过 Vuex ,但是猜测后者在 SSR 的时候会有问题,毕竟不可能让所有用户共享同一个 store 实例。
mxT52CRuqR6o5
2021-12-01 10:44:20 +08:00
@wxsm
不应该啊,不能 reactive 那这 vuex 有啥用
guyskk0x0
2021-12-05 18:24:12 +08:00
同问,刚在 Vuex discusstions 提了这个问题,可以关注一下 https://github.com/vuejs/rfcs/discussions/270#discussioncomment-1751815
shintendo
2021-12-05 21:19:09 +08:00
@guyskk0x0 这么说就是 SSR 的问题,反过来说,不用 SSR 的话就没关系了
guyskk0x0
2021-12-05 21:20:16 +08:00
@shintendo #7 对的
guyskk0x0
2021-12-07 11:57:03 +08:00
@shintendo #7 用了 SSR 应该也没事,Vue SSR 有 runInContext 选项,只是渲染比较慢。我还想到个优化方案,欢迎探讨: https://github.com/harttle/harttle.github.io/issues/160

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/819080

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX