e***@163.com
e***@163.com
  • 发布:2020-02-24 11:18
  • 更新:2020-03-15 13:57
  • 阅读:5077

uniapp store的vuex里怎么获取main.js里的属性

分类:uni-app

我在main.js里定义了全局变量,在store的vuex里怎么获取其值?

2020-02-24 11:18 负责人:无 分享
已邀请:
黄河爱浪

黄河爱浪 - 在线接单,个人uniapp插件主页:https://ext.dcloud.net.cn/publisher?id=110853

首先保证自己已经能正确的引用并使用 Vuex

在创建Vuex 实例中 增加 Mutation(突变)监听,参考官方文档

修改方式:

1、可通过 Page.vue(页面文件)中通过 getApp()实例对象获取 main.js 的全局变量,再调用 Mutation 中的方法,更新Vuex中的 state 值;

store.commit('Mutation中的方法名','getApp().全局变量');

2、可直接在 Mutation 的方法中调用 getApp() 获得实例后获取 main.js 的全局变量;

参考源码:

实例化 Vuex 方法

const store = new Vuex.Store({    
    state: {    
        token: '',  
    },    
    mutations: {    
        login(state, provider) {    
            state.token = provider;  
        }  
    }    
})

App.vue 文件

    export default {  
        globalData:{  
            token:'helang.love@qq.com'  
        },  
        onLaunch: function() {  
            // 调用 Vuex 中的 Mutation 中的 login 方法  
            this.$store.commit('login',getApp().globalData.token);  
            setTimeout(()=>{  
                // 查看 Vuex state.token 的值  
                console.log(this.$store.state.token);  
            },500);  
        },  
        onShow: function() {  

        },  
        onHide: function() {  

        }  
    }

我更推荐第一种,不推荐在 Vuex 文件中调用 Vuex 以外的方法。Vuex 只负责接收与更新状态即可。
我的uni-app插件库主页:https://ext.dcloud.net.cn/publisher?id=110853
感谢支持!

j***@outlook.com
  • 黄河爱浪

    已在楼下回复该问题,可查看楼下我的回复内容

    2020-03-15 13:51

f***@qq.com

f***@qq.com

m开头的方法,慕课网有免费课程我刚看完

  • 黄河爱浪

    多看文档,少看视频。文档一分钟,视频一小时。

    2020-03-15 13:51

该问题目前已经被锁定, 无法添加新回复