Vuex是怎样进行状态管理的
时间:2022-07-25
本文章向大家介绍Vuex是怎样进行状态管理的,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
store/index.js
import Vue from 'vue' import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
// 一开始就定义在state里面的数据,就会自动变成响应式
//如何添加数据到响应式系统
// Vue.set(添加到哪里,添加数据的类型key:(string|number),value:数据的值)
//如何响应式的删除state里面的数据
//Vue.delete(删除哪里,删除的key)
state: {
counter: 1000,
//比如还可以管理数组
students: [
{id: 110, name: 'yan', age: 18},
{id: 111, name: 'wang', age: 10},
{id: 112, name: 'zhao', age: 25},
{id: 113, name: 'li', age: 36}
]
},
mutations: {
//所有的修改都通过mutations提交
increment(state) {
state.counter++
},
decrement(state) {
state.counter--
},
incrementCount(state, count) {
state.counter += count
},
addstudent(state, stu) {
state.students.push(stu)
}
},
actions: {
},
modules: {
},
getters: {
powerCounter(state) {
return state.counter * state.counter //就算属性有缓存
},
more20stu(state) {
return state.students.filter(s => s.age > 20)
},
more20stulength(state,getters) {
return getters.more20stu.length
},
moreAgestu(state) {
return function(age) {
return state.students.filter(s => s.age > age)
}
}
}
})
## App.vue ##
<template>
<div id="app">
<h2>-------app内容--------</h2>
<h2>{{message}}</h2>
<h2>{{$store.state.counter}}</h2>
<button @click="addition">+</button>
<button @click="subtraction">-</button>
<!-- 这里我们只定义一个方法,传入不同的值 -->
<button @click="addCount(5)">+5</button>
<button @click="addCount(10)">+10</button>
<!-- 也可以传入一个对象 -->
<button @click="addStudent">点击添加学生</button>
<h2>-------hellovuex内容--------</h2>
<Hello-Vuex/>
<h2>-------getters的使用--------</h2>
<h2>{{$store.getters.powerCounter}}</h2>
<h2>{{$store.getters.more20stu}}</h2>
<h2>{{$store.getters.more20stulength}}</h2>
<h2>{{$store.getters.moreAgestu(25)}}</h2>
<!-- <Hello-Vuex :counter="counter"/> 以前的想显示的方法 -->
</div>
</template>
<script>
import HelloVuex from './components/HelloVuex'
export default {
name: 'App',
components: {
HelloVuex
},
data() {
return {
message: '我是app组件',
}
},
computed: {
more20stu() {
return this.$store.state.students.filter(s => {
return s.age > 20
})
}
},
methods: {
addition() {
this.$store.commit('increment')
},
subtraction() {
this.$store.commit('decrement')
},
addCount(count) {
this.$store.commit('incrementCount', count)
},
addStudent() {
const stu = {id: 1004, name: 'zhou', age: 40}
this.$store.commit('addstudent', stu)
}
//上面的this是一种普通的提交风格
//另一种提交风格
// this.$store.commit({
// tyoe: increment
// //这里跟挂载的数据也就是payload
// count
//})
}
}
</script>
## main.js ##
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
Vue.config.productionTip = false
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
## componentd/HelloVuex.vue ##
<template>
<div>
<h2>{{$store.state.counter}}</h2>
<h2>{{$store.getters.powerCounter}}</h2>
<h2>{{$store.getters.more20stu}}</h2>
</div>
</template>
<script>
export default {
name: 'HelloVuex',
//以前的方法,想要在app里显示子组价的counter,按如下定义
// props: {
// counter: Number
// }
}
</script>
- java:利用xpath删除xml中的空节点
- java array to list
- Python之Dijango的“坑” hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: 'utf-8' cod
- nGrinder 简易使用教程
- UI设计高效学习网站&工具,来自学长的收藏夹哦
- 安装git出现templates not found的问题
- 时间戳 时间
- jenkins 设置 gitlab web hooks
- 测试流程?项目管理流程?
- 学web前端开发写给新手的建议,超实用!
- 价值22万的5字母域名sanwa.com被启用
- Django admin 一些有用的设置
- mysql @value := 用法
- css样式—字体垂直、水平居中
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux Socket 编程简介和实现
- Linux (Ubuntu 18.04) 下安装vim编辑器的方法
- 把windows下的字体安装到Linux系统下的方法介绍
- Ubuntu 7.10修改软件源的方法
- Linux 僵尸进程产生原因及解决方法
- Ubuntu17.04配置更换国内源的方法
- Centos7硬盘挂载方法
- linux sort多字段排序实例解析
- Linux中Centos7搭建Hadoop服务步骤
- Centos7实现磁盘限额设置方法
- 在CentOS中部署多节点Citus集群的详细步骤
- 建立自己的npm镜像服务器
- Hugo搭建博客(一)— 基本设置
- Canvas系列(1):直线图形
- 《进化:从孤胆极客到高效团队》读书笔记