V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
doco
V2EX  ›  程序员

nuxtjs 项目中如何在单独的 js 文件里引入 vuex?

  •  
  •   doco · 2019-07-08 15:03:14 +08:00 · 4515 次点击
    这是一个创建于 1998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    TIM 截图 20190708120719 做了个 nuxtjs 的项目, 但是不知道要如何才能在 js 文件中引入 vuex, 上网找了下有一些是建议以导出 Vuex 实例的方式创建 store, 但是 nuxt 文档中又不建议这样做. 有人知道要怎样解决吗?

    9 条回复    2021-04-07 10:34:10 +08:00
    saberlove
        1
    saberlove  
       2019-07-08 15:35:40 +08:00
    你的这个 JS 文件写为一个 plugins
    然后在 plugins 里面使用

    export default ({ app, $axios, store, route, redirect }) => {
    socket.doSomeThing(()=>{

    })
    }
    saberlove
        2
    saberlove  
       2019-07-08 15:35:58 +08:00
    怎么发出去了。。
    saberlove
        3
    saberlove  
       2019-07-08 15:37:26 +08:00   ❤️ 1
    这里有 store 对应 vuex
    你直接使用 store.dispatch('socket/xxxx')就可以了
    noe132
        4
    noe132  
       2019-07-08 16:55:35 +08:00
    可以 hack 一下,从组件中获取到 store 后赋值到一个地方保存起来。
    nuxt 创建的 store 实例并没有 exports 出来,所以没法直接 import
    noe132
        5
    noe132  
       2019-07-08 16:57:10 +08:00
    对也可以写一个 plugin,在 plugin 执行的时候把 store 保存起来。
    saberlove
        6
    saberlove  
       2019-07-08 16:57:14 +08:00
    @noe132 实例初始化完毕以后 nuxt 会在 window 全局注入$nuxt 通过$nuxt.$store 可以访问 store
    但是这样不好 初始化完毕以前无法访问$nuxt
    saberlove
        7
    saberlove  
       2019-07-08 16:58:04 +08:00
    @noe132 plugin 的 context 上下文里面是有 store 实例的
    doco
        8
    doco  
    OP
       2019-07-08 17:00:52 +08:00
    @saberlove #3 确实好用了, 谢谢大佬.
    guoyancheng1022
        9
    guoyancheng1022  
       2021-04-07 10:34:10 +08:00
    @saberlove 大佬,用你的方法在 js 中 console.log(store.state.user_id)查出来是空值,但我在 vue 组件中 this.$store.state.user_id 确实能取到值
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4284 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:12 · PVG 18:12 · LAX 02:12 · JFK 05:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.