V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shintendo
V2EX  ›  Vue.js

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

  •  1
     
  •   shintendo · 2021-11-30 17:37:36 +08:00 · 1899 次点击
    这是一个创建于 849 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2021-12-07 11:57:03 +08:00
    mxT52CRuqR6o5
        1
    mxT52CRuqR6o5  
       2021-11-30 17:47:40 +08:00
    大部分情况下应该是没区别的,一般都是用 useStore 吧
    如果一个页面的某个组件有多个 vue 实例,又 provide 了不同的 store 时就会有区别
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       2021-11-30 17:50:57 +08:00
    想了一下好像不太对,不 useStore 有可能会导致不能 Reactive (不是很确定)
    wxsm
        3
    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
        4
    lujjjh  
       2021-11-30 18:38:42 +08:00   ❤️ 1
    没有用过 Vuex ,但是猜测后者在 SSR 的时候会有问题,毕竟不可能让所有用户共享同一个 store 实例。
    mxT52CRuqR6o5
        5
    mxT52CRuqR6o5  
       2021-12-01 10:44:20 +08:00   ❤️ 1
    @wxsm
    不应该啊,不能 reactive 那这 vuex 有啥用
    guyskk0x0
        6
    guyskk0x0  
       2021-12-05 18:24:12 +08:00
    同问,刚在 Vuex discusstions 提了这个问题,可以关注一下 https://github.com/vuejs/rfcs/discussions/270#discussioncomment-1751815
    shintendo
        7
    shintendo  
    OP
       2021-12-05 21:19:09 +08:00
    @guyskk0x0 这么说就是 SSR 的问题,反过来说,不用 SSR 的话就没关系了
    guyskk0x0
        8
    guyskk0x0  
       2021-12-05 21:20:16 +08:00
    @shintendo #7 对的
    guyskk0x0
        9
    guyskk0x0  
       2021-12-07 11:57:03 +08:00
    @shintendo #7 用了 SSR 应该也没事,Vue SSR 有 runInContext 选项,只是渲染比较慢。我还想到个优化方案,欢迎探讨: https://github.com/harttle/harttle.github.io/issues/160
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1367 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:34 · PVG 07:34 · LAX 16:34 · JFK 19:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.