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. Apache配置 6. 访问日记切割

    日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件 (1)配置 (1)配置 # vim /usr/local/apache2 .4/conf/extra/httpd-vh ...

  2. 最简单的JVM内存结构图

    JVM内存结构图 大家好,好几天没有更新了,今天的内容有点多,我们详细介绍下JVM内部结构图,还是和之前一样,案例先行,方便大家理解记忆. /** * @author :jiaolian * @dat ...

  3. 【Azure 应用服务】Azure App Service 自带 FTP服务

    问题描述 Azure PaaS服务是否有FTP/S服务呢? 回答问题 应用服务(Web App/App Service)在创建时候,默认创建了FTP服务并自动开启,用于应用部署.但它不是适合作为FTP ...

  4. Windows下的Linux子系统

    强调!!!必须是Windows专业版!!! 一.安装运行过程 第一步:打开开发人员模式 第二步:进入 '控制面板 '--'程序'--'启用的Windows功能'--勾选Linux子系统(根据提示进行重 ...

  5. java实现所有排序算法

    package sort;public class Sort { public static void BubbleSort(int[] arr) { //TODO 冒泡排序 for(int i=ar ...

  6. PTA 带头结点的链式表操作集

    6-2 带头结点的链式表操作集 (20 分)   本题要求实现带头结点的链式表操作集. 函数接口定义: List MakeEmpty(); Position Find( List L, Element ...

  7. PTA 冒泡排序

    6-4 冒泡排序 (10 分)   编程实现冒泡排序函数.void bubbleSort(int arr[], int n);.其中arr存放待排序的数据,n为数组长度(1≤n≤1000). 函数接口 ...

  8. 【pytorch学习笔记0】-CNN与LSTM输入输出维度含义

    卷积data的四个维度: batch, input channel, height, width Conv2d的四个维度: input channel, output channel, kernel, ...

  9. ES 分页方案

    ES 中,存在三种常见的分页方案: FROM, SIZE Search-After Scroll 下面将依次比较三种方案之间的 trede-off,并给出相应建议的应用场景. 常见分页,FROM, S ...

  10. 第一个真正的 GUI 程序——Tkinter教程系列02

    第一个真正的 GUI 程序--Tkinter教程系列02 前言 欢迎光临我的个人博客 chens.life Tk 系列教程: Tkinter教程系列01--引言和安装Tk 我们将编写一个英尺和米的转换 ...