【Vue】Re21 VueX 第二部分(Mutations)
一、Mutations携带参数处理
Store状态的更新唯一方式:提交Mutations
Mutations包含两部分:
1、字符串的事件类型【TYPE】
2、一个回调函数【HANDLER】 该函数的第一个参数是state
需求:点击按钮对store中的state属性的student数组增加一个对象元素
App.vue
<template>
<div id="app">
<h3>{{message}}</h3>
<p>
<!-- <button @click="$store.state.count --"> - </button>-->
<button @click="aaa"> - </button>
<!--<span>{{$store.state.count}}</span>-->
<strong>{{$store.getters.getCount}}</strong>
<button @click="bbb"> + </button>
<!-- <button @click="$store.state.count ++"> + </button>-->
<button @click="addStudent">addOneStudent</button>
</p> <ul> <!-- 使用store的getters属性调用 -->
<li v-for="student in $store.getters.large20Age">
{{student.id}} | {{student.name}} | {{student.age}} | {{student.gender}}
</li>
</ul> <ul> <!-- 使用当前组件computed属性调用 -->
<li v-for="student in largeThan20Age">
{{student.id}} | {{student.name}} | {{student.age}} | {{student.gender}}
</li>
</ul> <p>{{$store.getters.large20AgeLength}}</p> <p>
{{$store.getters.getStringJoin}}
</p> <ul>
<li v-for="student in $store.getters.largeAgeBy(0)">
{{student.id}} {{student.name}} {{student.age}} {{student.gender}}
</li>
</ul> <vuex-comp></vuex-comp>
</div>
</template>
<!-- Actions行为 + View视图 + State状态 -->
<script>
import VueXComp from "./components/VueX";
export default {
name: 'App',
data () {
return {
message : 'sss',
// count : 0
}
},
methods : {
aaa () {
this.$store.commit('decrement');
},
bbb () {
this.$store.commit('increment');
},
addStudent () {
const student = { id : 118, name : 'alan', age : 22, gender : false }
this.$store.commit('increaseStudent', student);
}
},
computed : {
// largeThan20Age () {
// return this.$store.state.students.filter(student => {
// return student.age >= 20;
// });
// } largeThan20Age () {
return this.$store.state.students.filter(student => student.age >= 20);
} },
components : {
vuexComp : VueXComp
}, }
</script> <style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
store/index.js
import Vue from 'vue';
import VueX from 'vuex'; /* 安装VueX */
Vue.use(VueX); const store = new VueX.Store({
state : { /* 状态保存,存放所有组件共享的对象 */
count : 0,
str : 'sss',
students : [
{ id : 110, name : '学生110', age : 28, gender : true, },
{ id : 111, name : '学生111', age : 18, gender : true, },
{ id : 112, name : '学生112', age : 38, gender : false, },
{ id : 113, name : '学生113', age : 14, gender : true, },
{ id : 114, name : '学生114', age : 44, gender : false, },
{ id : 115, name : '学生115', age : 10, gender : true, },
]
},
mutations : { /* */
increment (state) {
state.count ++
},
decrement (state) {
state.count --
},
increaseStudent (state, student) {
state.students.push(student);
}
},
actions : { },
modules : { },
getters : {
getStringJoin (state) {
return state.str + 'saa';
},
getCount (state) {
return state.count;
},
large20Age (state) {
return state.students.filter(student => student.age > 20);
},
large20AgeLength (state, getters) {
return getters.large20Age.length;
},
largeAgeBy (state) {
return (age) => {
return state.students.filter(student => student.age > age);
}
}
}
}); export default store;
mutations的方法的自定义参数被称为payload,意思负荷,荷载
二、Mutations提交风格
this.$store.commit({
type : 'increaseStudent',
student : student
});
三、响应规则
详细见,还不能看懂,先留在这里标记一下:
https://www.bilibili.com/video/BV15741177Eh?p=136
136、137、138
【Vue】Re21 VueX 第二部分(Mutations)的更多相关文章
- 072——VUE中vuex之使用mutations修改购物车仓库数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue-learning:41 - Vuex - 第二篇:const store = new Vue.Store(option)中option选项、store实例对象的属性和方法
vuex 第二篇:const store = new Vue.Store(option)中option选项.store实例对象的属性和方法 import Vuex from 'vuex' const ...
- [Nuxt] Update Vuex State with Mutations and MapMutations in Vue.js
You commit changes to state in Vuex using defined mutations. You can easily access these state mutat ...
- 深入浅出的webpack4构建工具--webpack4+vue+route+vuex项目构建(十七)
阅读目录 一:vue传值方式有哪些? 二:理解使用Vuex 三:webpack4+vue+route+vuex 项目架构 回到顶部 一:vue传值方式有哪些? 在vue项目开发过程中,经常会使用组件来 ...
- vue:vuex详解
一.什么是Vuex? https://vuex.vuejs.org/zh-cn 官方说法:Vuex 是一个专为 Vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相 ...
- webpack4 + vue + vue-router + vuex
ps: 所有案例使用的 node 及 npm 版本如下 node版本: v8.4.0 npm: 5.3.0 下一个案例默认是接着上一个继续写的 建议先熟悉以下文档 vue vue-router vue ...
- vue 之 vuex
Vuex 什么是Vuex? 官方说法:Vuex 是一个专为 Vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 个人 ...
- vue --- axios , vuex
一 . 内容回顾 1.webpack(前端中工作,项目上线之前对整个前端项目优化) - entry:整个项目的程序入口(main.js或index.js): - output:输出的出口: - loa ...
- Vue+Vant+Vuex实现本地购物车功能
通常,我们做移动端商城的时候,通常会有购物车模块,那购物车模块有两种实现方式,一是储存在后台通过接口获取到购物车信息,二是存在用户手机本地,第一种方法只要调用接口获取比较简单,这里介绍的是第二种方法, ...
- vue中vuex的五个属性和基本用法
VueX 是一个专门为 Vue.js 应用设计的状态管理构架,统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data ). Vuex有五个核心概念: state, ge ...
随机推荐
- 剑指Offer-66.机器人的运动范围(C++/Java)
题目: 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能够 ...
- go随笔
1)声明在函数内部,是函数的本地值,类似private 2)声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect 3)声明在函数外部且首字母大写是所有包可见的全局值, ...
- 项目管理--PMBOK 读书笔记(9)【项目资源管理】
1.团队成员的角色与职责: 1)层级结构(OBS):与 WBS 交叉确认部门的全部项目指责,项目组织结构图: 2)矩阵结构(RAM):工作包(活动)与项目团队的关系,主要用于明确角色与期望(职责) 3 ...
- flutter 尝试创建第一个页面(三)
新建目录 assets 存放图片 在pubspec..yaml 中添加 flutter: # The following line ensures that the Material Icons f ...
- 在线HMAC加密工具
在线HMAC加密工具提供一站式服务,支持MD5至SHA512.RIPEMD160及SM3等多种哈希算法,用户可便捷选择算法并生成安全的HMAC散列值,确保消息完整性与验证来源.适用于开发调试.网络安全 ...
- 利用.htaccess绑定子域名到子目录
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 利用.htaccess绑定子域名到子目录 日期:2018- ...
- 实验5.OSPF配置实验
# 实验5.OSPF配置实验 配置ospf使全网联通 实验组 拓扑,路由器选择为AR2220,交换机为S5700 联通配置 给每台路由器的对应端口配置相应的ip,并启动ospf协议,可以看到此时5台设 ...
- Linux 内核:设备驱动模型(2)driver-bus-device与probe
Linux 内核:设备驱动模型(2)driver-bus-device与probe 系列:Linux 内核:设备驱动模型 学习总结 参考: https://blog.csdn.net/lizuobin ...
- qt中的 connect 函数
1.connect()函数实现的是信号与槽的关联. 注意:只有QO bject类及其派生的类才能使用信号和槽的机制 2.函数原型 static QMetaObject::Connection conn ...
- 如何将自己的网站从 HTTP 的转换为 HTTPS 的
1. 获取 SSL/TLS 证书 首先,你需要获得一个 SSL/TLS 证书.你可以从以下来源之一获取证书: 免费证书: Let's Encrypt:一个免费的.自动化的证书颁发机构(CA),广泛使用 ...