返回顶部
首页 > 资讯 > 精选 >在Vue中如何实现添加全局store
  • 904
分享到

在Vue中如何实现添加全局store

2023-06-29 18:06:05 904人浏览 安东尼
摘要

小编给大家分享一下在Vue中如何实现添加全局store,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Vue添加全局store在命令行中输入安装npm install --save vuex在m

小编给大家分享一下在Vue中如何实现添加全局store,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

Vue添加全局store

在命令行中输入安装

npm install --save vuex

在Vue中如何实现添加全局store

在main.js文件中引用

store和在new Vue中声明store

import store from './store'store,

在Vue中如何实现添加全局store

在src中创建一个page文件

在page文件下创建一个module的js文件(内容如下)

const state = {HomeStatus:{LoginStatus:false},Users:[],}const mutations = {['setuseinfo'] (state, data) {},}const actions = {}

在Vue中如何实现添加全局store

在src下创建一个store文件

在store文件下创建一个index的js文件

import Vue from 'vue'import Vuex from 'vuex'import page from '../page/module'Vue.use(Vuex)export default new Vuex.Store({state: {},modules:{page}})

在Vue中如何实现添加全局store

store使用方法讲解

vuex 包含有五个基本的对象

  • state存储状态。也就是变量;

  • getters派生状态。也就是set、get中的get,有两个可选参数:state、getters分别可以获取state中的变量和其他的getters。外部调用方式:store.getters.personInfo()。就和vue的computed差不多;

  • mutations提交状态修改。也就是set、get中的set,这是vuex中唯一修改state的方式,但不支持异步操作。第一个参数默认是state。外部调用方式:store.commit(‘SET_AGE’, 18)。和vue中的methods类似。

  • actions:和mutations类似。不过actions支持异步操作。第一个参数默认是和store具有相同参数属性的对象。外部调用方式:store.dispatch(‘nameAsyn’)。this.$store.dispatch(‘user/login’, this.loginFORM)

  • modules:store的子模块,内容就相当于是store的一个实例。调用方式和前面介绍的相似,只是要加上当前子模块名,如:store.a.getters.xxx()。

在Vue中如何实现添加全局store

import Vue from 'vue'import Vuex from 'vuex'import state from './state.js'import getters from './getters'import mutations from './mutations.js'import actions from './actions.js'//安装Vue Devtools调试工具https://blog.csdn.net/li22356/article/details/113092495//挂载Vuex,帮助手册Https://www.jianshu.com/p/2e5973fe1223//模块化可参考https://www.yisu.com/article/150752.htmVue.use(Vuex);//创建VueX对象,单页面使用<h2>{{ $store.state.name }}</h2>console.log(this.$store.state.name)//新增state对象Vue.set(state,"age",15),删除Vue.delete(state,'age')const store = new Vuex.Store({  //存放数据,存放状态  //使用方法  state,  //加工state成员给外界  //state 当前VueX对象中的状态对象  // getters 当前getters对象,用于将getters下的其他getter拿来用  //组件使用this.$store.getters.fullInfo  getters,  //state成员操作,操作state数据的方法的集合,比如对该数据的修改、增加、删除等等。  //组件调用this.$store.commit('SET_TOKEN','new token')挂载方法  //同步处理  mutations,  //异步处理  //组件中使用this.$store.dispatch('aEdit','new TOKEN')  actions});export default () => {  return store}
import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({    //这里放全局参数,比如用户登录信息  state: {token: "helloVueX",    name: "",    age: ""  },  mutations: {    //这里是set方法,比如对该数据的修改、增加、删除等等。    //组件调用this.$store.commit('SET_TOKEN','new token')挂载方法    SET_TOKEN: (state, token) => {    state.token = token    console.log(state.token);  }  },  //getters 当前getters对象(可对对象进行二次更改),用于将getters下的其他getter拿来用,组件通过this.$store.getters.fullInfo拿来使用 getters: {  token: state => state.token,  nameInfo(state) {    return "姓名:" + state.name  },  fullInfo(state, getters) {    return getters.nameInfo + '年龄:' + state.age  } }, //异步处理//组件中使用this.$store.dispatch('aEdit','new TOKEN')  actions: {   QQlogin({commit}, token) {    return new Promise((resolve, reject) => {      setToken(token);         //把token存放到cookie里      commit('SET_TOKEN', token)     //commit调用mutations 数据      resolve()    })  },  aEdit(context, payload) {    return new Promise((resolve, reject) => {      setTimeout(() => {        context.commit('SET_TOKEN', payload)        resolve()      }, 2000)    })  }  },  modules: {//这里是我自己理解的是为了给全局变量分组,所以需要写提前声明其他store文件,然后引入这里  }})

vuex,module间的方法调用

我们用vuex时通常会分功能创建多的module,单个module里的操作大家应该很清楚,那多个module之间怎么调用了?

详细代码:

现在我有两个module:user 和 menu,要在user中调用menu的actions方法,操作如下:

const user = {  state: {    permissions: []  },  mutations: {    SET_PERMISSIONS: (state, permissions) => {      state.permissions = permissions    }  },  actions: {    getPermissions({commit}) {      queryPermissions().then(res => {        sessionStorage.setItem('permissions', JSON.stringify(res))        this.dispatch('setPermissions', res); // 调本module里的方法      })    },    setPermissions({commit, dispatch, state, rootState}, data) {      commit('SET_PERMISSIONS', data); // 本module的commit      dispatch('setMenuData', data); // 调menu里的方法      console.log(rootState.menu.menus); // 取menu里的参数    }  }} export default userconst menu = {  state: {    menus: []  },  mutations: {    SET_MENUS: (state, data) => {      state.menus = data    }  },  actions: {    setMenuData({commit, state}, data) {      commit('SET_MENUS', data);    }  }}export default menu

解释:

actions里各个方法的第一个参数其实有很多属性,只是我们平时习惯了解构的写法,如setMenuData({commit, state},data)。当把第一个参数的值全输出,如setMenuData(param,data),输出param会发现其中包含以下属性:

vue文件调用store的action方法 

const actions = {    // 根据权限动态生成路由    async generateRoutes({ commit }) {      // 执行代码    }}
created() {        this.generateRoutes()    },methods: {        ...mapActions('menu', [            'generateRoutes'        ])        }

看完了这篇文章,相信你对“在Vue中如何实现添加全局store”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 在Vue中如何实现添加全局store

本文链接: https://lsjlt.com/news/326040.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 在Vue中如何实现添加全局store
    小编给大家分享一下在Vue中如何实现添加全局store,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Vue添加全局store在命令行中输入安装npm install --save vuex在m...
    99+
    2023-06-29
  • 在Vue中实现添加全局store
    目录Vue添加全局store在命令行中输入安装在main.js文件中引用在src中创建一个page文件在src下创建一个store文件store使用方法讲解vuex 包含有五个基本的...
    99+
    2024-04-02
  • Vue如何实现全局loading
    这篇文章将为大家详细讲解有关Vue如何实现全局loading,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思路我们项目请求使用的是axios,那么我们就在请求前后进行拦截...
    99+
    2024-04-02
  • Vue全局水印如何实现
    今天小编给大家分享一下Vue全局水印如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2024-04-02
  • vue如何实现拖拽添加
    这篇文章主要为大家展示了“vue如何实现拖拽添加”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现拖拽添加”这篇文章吧。效果图并没有判断是否重复,没有删除旧数据数据体 <...
    99+
    2023-06-22
  • android如何在布局中添加图片
    在Android布局中添加图片有多种方式,以下是其中几种常用的方法:1. 使用ImageView控件:将ImageView控件添加到...
    99+
    2023-09-27
    android
  • vue全局挂载如何实现APP全局弹窗
    本篇内容主要讲解“vue全局挂载如何实现APP全局弹窗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue全局挂载如何实现APP全局弹窗”吧!需求背景app端对接网页端的客服系统,在用户实现网页...
    99+
    2023-06-30
  • vue如何在路由前面加全局参数
    在Vue中,我们通常使用路由来进行页面之间的切换和跳转。而在某些特殊的情况下,我们可能需要为所有的路由都添加一些全局参数,以方便我们在各个页面之间进行数据传递或者控制。本文将介绍如何在Vue的路由前面加上全局参数。一、为什么需要在路由前面加...
    99+
    2023-05-20
  • vue如何实现全局组件注册
    这篇文章主要为大家展示了“vue如何实现全局组件注册”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现全局组件注册”这篇文章吧。全局组件注册1 一般情...
    99+
    2024-04-02
  • Vue如何实现全局的toast组件
    这篇文章主要介绍“Vue如何实现全局的toast组件”,在日常操作中,相信很多人在Vue如何实现全局的toast组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue如何实现全局的toast组件”的疑惑有所...
    99+
    2023-07-05
  • Vue全局变量和局部变量如何实现
    这篇文章主要介绍“Vue全局变量和局部变量如何实现”,在日常操作中,相信很多人在Vue全局变量和局部变量如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue全局变量和局部变量如何实现”的疑惑有所帮助!...
    99+
    2023-07-04
  • vue-table如何实现添加和删除
    这篇文章主要介绍了vue-table如何实现添加和删除,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下一.代码<!DOCTYPE html>&...
    99+
    2023-06-15
  • vue如何动态添加store、路由和国际化配置方式
    这篇文章主要为大家展示了“vue如何动态添加store、路由和国际化配置方式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何动态添加store、路由和国际化配置方式”这篇文章吧。vue动...
    99+
    2023-06-29
  • vue如何实现全局过滤器注册
    这篇文章主要介绍了vue如何实现全局过滤器注册,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全局过滤器注册1 一般情况官方注册过滤器的方式:...
    99+
    2024-04-02
  • vue如何在store仓库中使用路由
    目录在store仓库中使用路由在js文件中使用vue的router和store在store仓库中使用路由 在仓库中,this的指向指的是store,但是在一般的工程,我们有可能会需要...
    99+
    2024-04-02
  • jsp支持如何实现添加在Spring boot中
    今天就跟大家聊聊有关jsp支持如何实现添加在Spring boot中 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。spring boot添加对jsp的支持,以下是pom.xml文件...
    99+
    2023-05-31
    springboot spring boo jsp
  • Vue3中注册全局的组件,并在TS中添加全局组件提示方式
    目录Vue3中注册全局的组件Vue3踩坑--全局注册组件我的框架:vue3+vite+ts+naiveUIVue3中注册全局的组件 1. 在src/components中新建inde...
    99+
    2024-04-02
  • 如何在pyqt中实现全局事件实战记录
    目录前言全局事件总线Vue 中的全局事件总线Qt 中的全局事件总线总结前言 在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景: 我想要点击任意一个专辑...
    99+
    2024-04-02
  • 详解如何在Vue中动态添加类名
    目录静态和动态类有条件的类名使用数组语法使用对象语法与自定义组件一起使用快速生成类名使用计算属性来简化类能够向组件添加动态类名是非常强大的功能。它使我们可以更轻松地编写自定义主题,根...
    99+
    2024-04-02
  • vue如何实现消息提示全局组件
    这篇文章主要介绍了vue如何实现消息提示全局组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用vue-cli3.0生成项目toast全局...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作