vuex的作用

简单理解,就是将多个组件共享的变量统一放到一个地方去管理,比如用户登录时的数据token。

快速上手

安装:npm install vuex

首先,我们在src文件夹下创建一个文件夹:store,在文件夹中创建一个index.js文件,写入以下代码。

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex) const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++
},
decrement(state) {
state.count--
}
}
})
export default store

其次,我们要让所有的Vue组件都能使用这个store。就需要在main.js中引入。引入方式与router一致。

import Vue from 'vue'
import App from './App.vue'
import router from "./router"
import store from "./store"
Vue.config.productionTip = false new Vue({
render: h => h(App),
router,
store,
}).$mount('#app')

最后,使用App.vue

<template>
<div>
<h2>{{$store.state.count}}</h2>
<button @click="addCount">增加</button>
<button @click="delCount">减少</button>
</div>
</template>
<script>
export default {
name: 'about',
methods: {
addCount() {
this.$store.commit('increment')
},
delCount() {
this.$store.commit('decrement')
}
}
}
</script>

这就是vuex最简单的使用方式。

  1. 提取出公共的store对象,用于保存在多个组件中共享的状态

  2. 将store对象放到Vue实例中,这样可以保证所有的组件都能使用到数据

  3. 在其他组件中使用store中的数据即可。

通过this.$store.state.属性,即可访问状态

通过this.$store.commit(‘名称’)即可访问mutations中对应的方法。

state中的状态可以直接进行修改,但是我们不建议这么修改。我们建议通过mutations去进行操作。

核心概念

State

Vuex提出使用单一状态树(单一数据源)。就是将一堆公用的数据放到一起去管理。如果你的状态信息是存放到多个Store中的,那么之后的管理和维护就会非常麻烦。

State类似于vue中data,用于定义全局信息。不建议直接修改state中的数据。

Getters

有时候,我们需要从state中获取一些经过改变后的数据,可以使用getter。同时,state中的数据不建议直接获取,最好是通过getter。

state: {
count: 0,
studentList: [
{id: 3, name: '张三', age: 23},
{id: 4, name: '李四', age: 24},
{id: 5, name: '王五', age: 25},
{id: 6, name: '赵六', age: 26}
]
},
getters: {
getStudentByAge(state) {
return state.studentList.filter(e => e.age > 24)
}
},

在页面中,就可以通过this.$store.getters.xxx获取 。这里获取的时候不加括号。

Mutations

通过mutations可以对数据进行修改,也可以传入其他参数。

Mutations类似于vue中的methods

Mutations中的方法,第一个参数一定是state,如果需要传参,从第二个参数开始。

mutations: {
increment(state, n) {
state.count += n
},
decrement(state) {
state.count--
}
}

在其他组件中,如果需要调用mutations,直接使用this.$store.commit(‘方法名’, 参数列表)

【vue-08】vuex的更多相关文章

  1. 【vue知识点】1)vue生命周期

    [vue知识点]2)vue登录认证

  2. 【vue iview】项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了。

    [vue iview]项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了.

  3. 【Vue.js】代码优化:在dom中加一行v-if就可少写一个循环类方法

    [问题描述] 把当前用户的购物车中(cartList),商品(good)选中字段checked = true的商品在订单页面中进行展示出来. [一般做法](两次循环) 首先取出当前用户的购物车列表,循 ...

  4. 【vue入门】日志demo,增删改查的练习(无vuex版本)

    安装 1. 确定电脑已装node和npm 出现版本号则说明电脑已经安装好node和npm2. 创建一个基于webpack的项目   3. 在项目里安装依赖 4. 运行 配置路由为了动态渲染各个页面的组 ...

  5. 【vue开发】vue导出Excel表格教程&demo

    前端工作量最多的就是需求,需求就是一直在变,比如当前端数据写完之后,需要用Excel把数据下载出来:再比如前端在没有数据库想写些demo玩时,也是很好的选择. 第一步安装依赖包,修改配置 1.装依赖: ...

  6. 【Vue课堂】Vue.js 父子组件之间通信的十种方式

    这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...

  7. 【vue学习】vue中怎么引用laydate.js日期插件

    此贴意在解决一个妹子的问题 https://q.cnblogs.com/q/101462 下载js包 http://www.layui.com/laydate/ 将laydate下载的包解压放入sta ...

  8. 【54.08%】【BZOJ 1941】Hide and Seek

    Time Limit: 16 Sec  Memory Limit: 162 MB Submit: 919  Solved: 497 [Submit][Status][Discuss] Descript ...

  9. 【vue+axios】一个项目学会前端实现登录拦截

    原文链接:github.com 一个项目学会vue全家桶+axios实现登录.拦截.登出功能,以及利用axios的http拦截器拦截请求和响应. 前言 该项目是利用了Github 提供的persona ...

  10. 【VUE/JS】vue和js禁止浏览器页面后退

    1.vue 禁止浏览器后退需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换整理一下解决方法 和 使用方法: 1.在路由配置中给这个路由添加meta信息,比如: { path: '/ho ...

随机推荐

  1. python数据分析三剑客基础之matpoltlib初解

    一.什么是matplotlib? python的底层绘图工具,主要做数据可视化图表,源自matplot. 二.为什么要学matplotlib? 1.它能将数据进行可视化,更直观的呈现出来 2.它能让数 ...

  2. malloc和free解析

    malloc和free都是库函数,调用系统函数sbrk()来分配内存.除了分配可使用的内存以外,还分配了"控制"信息,这有点像内存池常用的手段.并且,分配的内存是连续的. 1. m ...

  3. Go语言学习笔记——在本地建立一个官网查看

    命令行内运行 godoc -http=:8080 运行完成后打开浏览器输入网址:http://localhost:8080能看到一个和官网一模一样的网站,然后查看帮助文档

  4. 一个C#开发编写Java框架的心路历程

    前言 这一篇絮絮叨叨,逻辑不太清晰的编写Java框架的的一个过程,主要描述我作为一个java初学者,在编写Java框架时的一些心得感悟. 因为我是C#的开发者,所以,在编写Java框架时,或多或少会带 ...

  5. python的类的实际联系--烤地瓜和搬家具

    #coding:utf-8 2 class SweetPotato(): 3 def __init__(self): 4 #先初始化对象 5 self.cook_time = 0 6 self.coo ...

  6. Tomcat详解系列(1) - 如何设计一个简单的web容器

    Tomcat - 如何设计一个简单的web容器 在学习Tomcat前,很多人先入为主的对它的认知是巨复杂的:所以第一步,在学习它之前,要打破这种观念,我们通过学习如何设计一个最基本的web容器来看它需 ...

  7. 练习使用Unicorn、Capstone

    Unicorn是一个轻量级的多平台,多体系结构的CPU仿真器框架.官网:http://www.unicorn-engine.org/ Capstone是一个轻量级的多平台,多体系结构的反汇编框架.官网 ...

  8. springboot集成swagger实战(基础版)

    1. 前言说明 本文主要介绍springboot整合swagger的全过程,从开始的swagger到Knife4j的进阶之路:Knife4j是swagger-bootstarp-ui的升级版,包括一些 ...

  9. Linux系统浮动IP的配置

    什么是浮动IP,为什么要配置浮动IP 首先说一下为什么要配置浮动IP. 原文链接:https://blog.csdn.net/readiay/article/details/53538085 现在有一 ...

  10. iNeuOS工业互联平台,发布:消息管理、子用户权限管理、元件移动事件、联动控制和油表饼状图,v3.4版本

    目       录 1.      概述... 2 2.      平台演示... 2 3.      消息管理... 2 4.      子用户权限管理... 3 5.      元件移动事件... ...