前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Vuex实现uni-app项目全局接收存取url参数

利用Vuex实现uni-app项目全局接收存取url参数

作者头像
德顺
发布2021-01-07 14:31:24
1.6K0
发布2021-01-07 14:31:24
举报
文章被收录于专栏:前端资源

前些时间写了 Vue状态管理模式:Vuex入门教程 ,今天再整理一下,利用 Vuex 全局接受参数及存取使用的一个方法。

首先要使用 store ,安装及使用方法参见上文。

./store/index.js 中添加代码:

代码语言:javascript
复制
const store = new Vuex.Store({
  state: {
    device: null, // 设备来源
  },
  mutations: {
    /*
     * 更新设备来源
     */
    UPDATE_DEVICE (state, deviceStr) {
      if (deviceStr) {
        state.device = deviceStr.toLowerCase()
        console.log('device:' + state.device)
      }
    }
  }
});

export default store

这里使用了 toLowerCase() 方法,是将接收的参数统一转换为小写。

当然你也可以使用 toUpperCase() 方法将接收的参数统一转换成大写,也可以不进行转换,直接保存。

./App.vue 中展开并调用 mutations 方法,在 onLaunch 中调用:

代码语言:javascript
复制
import { mapMutations } from 'vuex'

onLaunch: function(e) {
    // 获取设备参数
    let device = e.query.device
    if (device) {
      this.saveState(e.query)
    }
},
methods: {
  ...mapMutations(['UPDATE_DEVICE']),
  
  saveState: function (query) {
    if (query.device) {
      this.UPDATE_DEVICE(query.device)
    }
  }
}

我是在 App.vue 中调用的,当然你也可以使用 Vue 的路由钩子:

代码语言:javascript
复制
import vue from "vue";
import vueRouter from "vue-router"
import routes from "../routes"
import store from "../store"

vue.use(vueRouter);

const router = new vueRouter({
  routes,
  mode: "history"
})

router.beforeEach((to, from, next) => {
  //判断设备
  store.commit('UPDATE_DEVICE', to.query.device)

  next()
});

这样就可以在任意位置调用并存取接收到的参数了:

例如在 ./src/pages/index/index.vue 中使用:

代码语言:javascript
复制
let device = this.$store.state.device || null

未经允许不得转载:w3h5 » 利用Vuex实现uni-app项目全局接收存取url参数

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档