【vue-08】vuex
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最简单的使用方式。
提取出公共的store对象,用于保存在多个组件中共享的状态
将store对象放到Vue实例中,这样可以保证所有的组件都能使用到数据
在其他组件中使用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的更多相关文章
- 【vue知识点】1)vue生命周期
		
[vue知识点]2)vue登录认证
 - 【vue iview】项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了。
		
[vue iview]项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了.
 - 【Vue.js】代码优化:在dom中加一行v-if就可少写一个循环类方法
		
[问题描述] 把当前用户的购物车中(cartList),商品(good)选中字段checked = true的商品在订单页面中进行展示出来. [一般做法](两次循环) 首先取出当前用户的购物车列表,循 ...
 - 【vue入门】日志demo,增删改查的练习(无vuex版本)
		
安装 1. 确定电脑已装node和npm 出现版本号则说明电脑已经安装好node和npm2. 创建一个基于webpack的项目 3. 在项目里安装依赖 4. 运行 配置路由为了动态渲染各个页面的组 ...
 - 【vue开发】vue导出Excel表格教程&demo
		
前端工作量最多的就是需求,需求就是一直在变,比如当前端数据写完之后,需要用Excel把数据下载出来:再比如前端在没有数据库想写些demo玩时,也是很好的选择. 第一步安装依赖包,修改配置 1.装依赖: ...
 - 【Vue课堂】Vue.js 父子组件之间通信的十种方式
		
这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...
 - 【vue学习】vue中怎么引用laydate.js日期插件
		
此贴意在解决一个妹子的问题 https://q.cnblogs.com/q/101462 下载js包 http://www.layui.com/laydate/ 将laydate下载的包解压放入sta ...
 - 【54.08%】【BZOJ 1941】Hide and Seek
		
Time Limit: 16 Sec Memory Limit: 162 MB Submit: 919 Solved: 497 [Submit][Status][Discuss] Descript ...
 - 【vue+axios】一个项目学会前端实现登录拦截
		
原文链接:github.com 一个项目学会vue全家桶+axios实现登录.拦截.登出功能,以及利用axios的http拦截器拦截请求和响应. 前言 该项目是利用了Github 提供的persona ...
 - 【VUE/JS】vue和js禁止浏览器页面后退
		
1.vue 禁止浏览器后退需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换整理一下解决方法 和 使用方法: 1.在路由配置中给这个路由添加meta信息,比如: { path: '/ho ...
 
随机推荐
- NoSQL安装与操作
			
redis操作: redis的启动与关闭:注意:(需要关闭防火墙) redis的启动:redis-server redis.conf redis的登录:redis-cli -a pass redis的 ...
 - 关于python浮点数精度问题计算误差的原因分析
			
在python中使用浮点数运算可能会出现如下问题 a = 0.1+0.2print(a) 输出的结果是 0.30000000000000004 原因如下: 出现上面的情况,主要还是因浮点数在计算机中实 ...
 - Python中树的遍历-堆排序
			
1.二叉树的遍历 遍历:迭代所有元素一遍. 树的遍历:对树中所有的元素不重复的访问一遍,也成扫描 广度优先遍历:层序遍历 深度优先遍历:前序.中序.后续遍历. 遍历序列:将树中所有元素遍历一遍后,得到 ...
 - python tempfile 创建临时目录
			
一.tempfile介绍 该模块创建临时文件和目录.它适用于所有支持的平台.TemporaryFile,NamedTemporaryFile,TemporaryDirectory,和SpooledTe ...
 - python-实现链式栈
			
7 """ 8 用一个类来实现一个节点 9 """ 10 class Node(object): 11 def __init__(self, ...
 - Python-生成器
			
创建生成器 创建生成器需要两部步骤 定义一个包含yield语句的函数 调用第一步创建的函数得到生成器 def test(val,step): 2 print("函数开始执行") 3 ...
 - PureStudy:学科知识分享——个人网站开发全解
			
PureStudy:学科知识分享--个人网站开发全解 项目描述 PureStudy,学科知识分享网站. 学生可以使用这个网站,来浏览相应学科的知识点.学习总结,获取相关的资料.此外,他们可以选择上传文 ...
 - 认识Python解释器和PyCharm编辑器
			
(1)安装Python解释器 Python官网:https://www.python.org/ 下载对应机器(Windows/Mac)的安装包: 百度网盘地址: 链接:https://pan.baid ...
 - 痞子衡嵌入式:MCUXpresso IDE下在线调试时使用不同复位策略的现象总结
			
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结. 本篇实际上是<IAR在线调试时设不同复位类型可能会导致i.M ...
 - [贪心]D. 【例题4】国王游戏
			
D . [ 例 题 4 ] 国 王 游 戏 D. [例题4]国王游戏 D.[例题4]国王游戏 解析 贪心思想,考虑交换后的值比交换前的小. 然后数据规模用高精度 Code #include <b ...