【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 ...
随机推荐
- 常见的Linux命令
在 cmd 命令行 或者终端中 可以运行 node.js 命令 也可以 运行 SQL语句 还可以运行 Linux 命令 Li ...
- LeetCode 682. Baseball Game 棒球比赛(C++/Java)
题目: You're now a baseball game point recorder. Given a list of strings, each string can be one of th ...
- docker on windows v19 红色启动不了
遇到: error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/json: open //./ ...
- CNN --入门MNIST识别
Smiling & Weeping ---- 下次你撑伞低头看水洼, 就会想起我说雨是神的烟花. 简介:主要是看刘二大人的视频讲解:https://www.bilibili.com/video ...
- spring使用RedisCacheManager管理key的一些问题
spring可以很好地管理各种内存的快速缓存. 这些常见的内存缓存库实现方式有redis,Ehcache. 本文阐述的是redis,毕竟这个东西相当容易使用. spring通过 org.springf ...
- Linux 下使用Java连接MySQL数据库,并且实现插入、删除、选择操作
实验环境: OS : CentOS5.5 (Linux) IDE : Eclipse DBMS : MySQL 准备工作: 1.安装 MySql . 详见http://www.cnblogs.com/ ...
- 基恩士PLC数据 转 Modbus RTU TCP项目案例
1 案例说明 1. 设置网关采集基恩士PLC数据 2. 把采集的数据转成Modbus协议转发给其他系统. var code = "244226f8-1eed-48e4 ...
- 在 AWS 平台搭建 DolphinScheduler
AWS平台搭建 DolphinScheduler DolphinScheduler 是当前热门的调度器,提供了完善的可视化.拖拉拽式的调度.在 AWS 平台上提供了 airflow 与 step fu ...
- Spark3 学习【基于Java】4. Spark-Sql数据源
通过DF,Spark可以跟大量各型的数据源(文件/数据库/大数据)进行交互.前面我们已经看到DF可以生成视图,这就是一个非常使用的功能. 简单的读写流程如下: 通过read方法拿到DataFrameR ...
- P8451 题解
显然,题面明摆着让你写一个可持久化 AC 自动机. 但是从空间来说这是不可能的. 想起做 不强制在线 的可持久化数据结构的一种方法,建立"时光树",具体来说,假若版本 \(x\) ...