最近在开发一套系统,前端使用VUE开发,由于本人是后端开发,前端也会一点,但是VUE接触不多,在VUE项目开发遇到的一些坑记录一下,不是专业前端写好的不好,大家不要唝。。。

在VUE项目中经常会用到mapState和mapActions,mapState主要用于同步全局的变量或者对象,mapActions主要是用于同步定义的方法,一般两者是结合使用,mapState同步项目中定义的全局的变量或者对象,mapActions是用于变量或者对象为空时,调用方法定义的全局方法获取。

mapActions和mapState需要引用vuex,所以在页面里面需要 使用下面的代码引入

import { mapActions, mapState } from 'vuex'

由于全局数据需要保存到本地缓存中,所以需要在main.js中引用store,并且定义全局的对象或者变量代码如下

import store from './store'
const state = {
userName,
token,
refreshToken,
tokenExpire,
menus: []
} Vue.use(Vuex)
export default new Vuex.Store({
state,
actions, // 自定义的一些方法
mutations // 自定义的修改状态的方法
})

如果需要在某个页面获取menus的对象,就可以使用 mapState,如果menus对象已有值就获取直接同步过来


import { mapActions, mapState } from 'vuex'
computed: {
    ...mapState([
      'menus'
    ])
// 如果要使用menus对象,直接使用this.menus即可

如果menus没有值就需要使用mapActions,将方法同步过来,在页面里面判断menus是否为空,如果为空,调用action获取并且保存,其他页面就可以直接获取了

import { mapActions, mapState } from 'vuex'
methods: {
...mapActions([
'getMenus'
])
if (menus.length === 0)
  this.getMenus() // 调用方法获取,这里getMenus如果是从接口获取数据,需要使用异步,否则可能会有问题

在使用mapActions时,发现在grid里面使用不了使用actions同步过来的对象,会报错,于是我在grid里面重新定义了变量,使用了watch来监听对象的变化,如果有变化就给定义的变量赋值,这样就解决了这个问题。

 watch: {
// 监听器的作用就是用来监听数据是否发生了变化,变化后可以进行一些其他操作
// 只要没有发生变化,就没有办法进行其他的操作
menus: function (newData, oldData) {
this.PageMenus = newData
console.log(newData, oldData)
}
},
mounted() {
if (this.menus.length === 0) {
this.getMenus()
} else {
this.PageMenus = this.menus // PageMenus是页面定义的变量
}
}

根据自己的理解写的,记录一下,如果有什么不正确的地方,欢迎更正。

关于VUE中的mapState和mapActions的使用的更多相关文章

  1. vuex之 mapState, mapGetters, mapActions, mapMutations 的使用

    一.介绍 vuex里面的四大金刚:State, Mutations,Actions,Getters (上次记得关于vuex笔记 http://www.cnblogs.com/adouwt/p/8283 ...

  2. vue中Axios的封装和API接口的管理

    前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...

  3. vue中遇到的坑

    如何解决在vue中替换图片.一个使用base64,而我们使用zepto之后,src找不到资源,因为已经打包了,难道强行写base64. 1. 引入文件时语法很重要! import "Foot ...

  4. vuex 中关于 mapState 的作用

    辅助函数 Vuex 除了提供我们 Store 对象外,还对外提供了一系列的辅助函数,方便我们在代码中使用 Vuex,提供了操作 store 的各种属性的一系列语法糖,下面我们来一起看一下: mapSt ...

  5. vue中父组件如何监听子组件值的变化

    vue中我们会遇到很多父子组件通信的需求, 下面简单列一下,父子组件通信的几种情况 1:父组件向子组件传值:使用prop向子组件传值: 2:子组件实时监听父组件传来的值的变化:使用watch去监听父组 ...

  6. vue中如何不通过路由直接获取url中的参数

    前言:为什么要不通过路由直接获取url中的参数? vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接 ...

  7. vue中的重要特性

    一.vue中的自定义组件 html的代码: <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  8. Vue中comoputed中的数据绑定

    Vue中的数据实现响应式绑定是在初始化的时候利用definePrototype的定义set和get过滤器,在进行组件模板编译时实现water的监听搜集依赖项,当数据发生变化时在set中通过调用dep. ...

  9. vue中使用stompjs实现mqtt消息推送通知

    最近在研究vue+webAPI进行前后端分离,在一些如前端定时循环请求后台接口判断状态等应用场景用使用mqtt进行主动的消息推送能够很大程度的减小服务端接口的压力,提高系统的效率,而且可以利用mqtt ...

  10. Vue中应用CORS实现AJAX跨域,及它在 form data 和 request payload 的小坑处理

    基本概念部分(一):理解CORS 说道Vue的跨域AJAX,我想先梳理一遍CORS跨域,"跨域资源共享"(Cross-origin resource sharing),它是一个W3 ...

随机推荐

  1. Python基础 - 多线程(上)

    前面对 进程 一点认识, 通俗理解, 进程是操作系统(OS)进行资源调度分配的基本单元. 每个程序的至少就一个进程在OS中被"监控"着的哦. 然后围绕着多进程, 用消息队列共享全局 ...

  2. C语言与汇编

    C变量 C 语言是如何把各种类型的变量转换成对应的汇编语言呢? 高级语言更容易被工程师理解,而汇编语言这样的低级语言,则更容易被机器解读.这是因为汇编语言里的大部分内容都跟机器语言一一对应,你可以这样 ...

  3. B1031 查验身份证 (15 分)

    描述 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5 ...

  4. Manim动画渲染:从代码到屏幕的幕后故事

    Manim是一个强大的动画制作库,它能够将简单的Python代码转化为精美的动画视频. 你是否好奇过,当你运行Manim代码时,背后的魔法是如何发生的呢? 今天,将重点介绍渲染过程中的三个关键步骤:S ...

  5. 计算机网络-TCP/IP知识点

    快速以太网数据帧有效载荷的最小长度为 46 字节(参考:Ethernet Frame Calculations) 实战 (2012 408考研真题 47)(15分)主机 H 通过快速以太网连接 Int ...

  6. 2025年KOL运营工具深度测评:11款高效工具全面解析,助力品牌全流程管理

    在数字营销日益精精化的今天,KOL(关键意见领袖)已成为品牌传播和用户转化的重要力量.然而,面对多平台.多任务的复杂协作需求,如何高效管理KOL资源.优化合作流程.提升ROI,成为品牌促销经理们急需解 ...

  7. [车载以太网] SOME/IP 参数和数据结构的序列化

    概述:SOME/IP 参数和数据结构的序列化 大小端/字节序 每个参数(parameter)的字节顺序由接口定义进行规定. 所有的 SOME/IP Header 字段,应该以网络字节序(大端)编码. ...

  8. XXL-JOB分布式任务调度平台

    简介 概述 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 特性 1.简单:支持通过Web页面对任务进行 ...

  9. .net session_cookie简介

    cookie cookie是什么? 存储在客户端浏览器(客户端硬盘)中的一段数据. cookie的作用? 保存用户的状态信息.(会话跟踪)cookie的主要作用就是用来保存状态的.因为http协议是无 ...

  10. css3桃花随意飘落

    桃花随意飘落 css3 + js 不实用第三方类库 效果图 <!DOCTYPE html> <html lang="en"> <head> &l ...