Vuex的简单应用
### 源码地址
https://github.com/moor-mupan/mine-summary/tree/master/前端知识库/Vuex_demo/demo
1. 什么是Vuex?
Vuex是一种状态管理模式,将所有组件的状态进行集中式的管理,并以相应的规则保证状态以一种可预测的方式发生变化。
2.Vue的单向数据流?
单向数据流即数据只能从一个方向改变,父组件 => 子组件,例:父组件传递给子组件1和子组件2一个name属性,当子组件1(组件2)改变name时,父组件和子组件2(组件1)的name不会发生变化。但是当改变父组件的name时子组件的name会随之改变。
3.Vuex的应用场景?
大型的单页应用,多个组件共享同一状态时。简单应用使用Vuex会使项目冗余(简单的使用store模式即可)。
4.简单的store模式?
const store = {
debug: true,
state: {
message: 'Hello!'
},
setMessageAction (newValue) {
if (this.debug) console.log('setMessageAction triggered with', newValue)
this.state.message = newValue
},
clearMessageAction () {
if (this.debug) console.log('clearMessageAction triggered')
this.state.message = ''
}
}
5.Vuex的核心概念?
1.state
Vuex使用单一状态树即state,state对象包含了全部应用的层级状态。作为单一数据源存在。
2.Getter
Vuex允许在store中定义一个getters,像计算属性一样,getters的返回值会根据它的依赖缓存起来,只有当依赖值发生变化时才会重新计算。在组件中通过store.getters获取相应的状态值。
在组件中引用getters中的属性时,有时可能需引入多个,可以使用Vuex中的mapGetter辅助函数
Getter参数:1.state作为第一个参数 2.接收其他的getter作为第二个参数
getters: {
test: (参数1, 参数2) => {
return ...
}
}
3.Mutation
更改Vuex的store中的状态的唯一方法是提交mutation(不支持异步操作)//组件中触发_例: this.$store.commit(del, [data])
mutations: {
del (state, index) {
state.comments.splice(index, 1)
},
add (state, data) {
state.comments.push(data)
}
}
4.Action
在组件中使用this.$store.dispatch('xxx')分发action,或者使用mapActions辅助函数将组件的methods映射为store.dispathch调用(需要在根节点先注入store,支持异步操作)//组件中触发_例: this.$store.dispatch(addAction, [data])
actions:{
//delAction (context, index) {
// context.commit('del', index)
//},
addAction (context, data) {
//actions可以实现异步操作-- 模拟异步
setTimeout(() => {
context.commit('add', data)
}, 2000)
}
5.Module
由于使用单一状态树,应用的所有状态都集中到同一个对象上。当应用很复杂时,store会变得很臃肿。因此Vuex允许我们将store分割为模块(可嵌套)。
*6.如何使用Vuex?
1.简单使用
1.创建一个store文件夹,文件夹下创建index.js文件
// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex); //创健一个state对象
const state = {
comments: [
{
userName: 'jack',
comment: 'Vue so easy'
},
{
userName: '小明',
comment: 'Vue 非常棒!'
},
]
} //创建getters对象 存储初始化数据(相当于Vue的computed(计算属性) ),可不使用getters而直接在组件中通过store.state获取状态值
const getters = {
initComments (state) {
return state.comments
}
} //修改状态(仅支持同步,实现异步需要使用actions)-- 如下del为同步,add为异步,可传入两个参数,1为state,2为要改变的值
const mutations = {
del (state, index) {
state.comments.splice(index, 1)
}, add (state, data) {
state.comments.push(data)
}
} //通过commit方法提交任务,可传入两参数,1位context,2为要改变的值
const actions = {
//delAction (context, index) {
// context.commit('del', index)
//}, addAction (context, data) {
//actions可以实现异步操作-- 模拟异步
setTimeout(() => {
context.commit('add', data)
}, 2000)
}
} //使用Vuex的store方法生成 store对象
const store = new Vuex.Store({
state,
getters,
mutations,
actions
}) export default store
2.main.js入口文件引入 store/index.js
// 外部js/UI库
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css' // 自定义文件
import store from './store/index.js'
import './assets/css/reset.css' // 组件
import App from './App.vue'
Vue.use(ElementUI) new Vue({
el: '#app',
store,
template: '<App />',
components: {App}
})
3.在组件中使用
// Add.vue
// 通过dispatch 分发actions任务,修改状态值
this.$store.dispatch('addAction', data) // List.vue
//使用计算属性 -- 获取状态值
computed: {
comments () {
return this.$store.getters.initComments // 如果未使用 getters则可通过state得到状态
// return this.$store.state.comments
}
} // 通过commit提交载荷 ,修改状态值
this.$store.commit('del', index)
2.store模块化
后续更新...
Vuex的简单应用的更多相关文章
- Vuex 最简单的数量增减实例
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 ...
- vuex最简单、最直白、最全的入门文档
前言 我们经常用element-ui做后台管理系统,经常会遇到父组件给子组件传递数据,下面一个简单的例子,点击按钮,把弹框显示变量数据通过子组件的props属性传递,子组件通过$emit事件监听把数据 ...
- vuex最简单、最详细的入门文档
如果你在使用 vue.js , 那么我想你可能会对 vue 组件之间的通信感到崩溃 . 我在使用基于 vue.js 2.0 的UI框架 ElementUI 开发网站的时候 , 就遇到了这种问题 : 一 ...
- vue的挖坑和爬坑之vuex的简单入门
首先vuex的中文文档https://vuex.vuejs.org/zh-cn/ 首先vuex是什么,官方解释是 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应 ...
- NO.01---今天聊聊Vuex的简单入门
作为一款个人认为非常牛x的框架,个人使用起来得心应手,所以近期就记录一下这款框架吧. 首先说一说 Vuex 是什么? 官方给出的解释:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它 ...
- [转] vuex最简单、最直白、最全的入门文档
前言 我们经常用element-ui做后台管理系统,经常会遇到父组件给子组件传递数据,下面一个简单的例子,点击按钮,把弹框显示变量数据通过子组件的props属性传递,子组件通过$emit事件监听把数据 ...
- Vuex教程简单实例
什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. ...
- 移动端最强适配(rem适配之px2rem)&& 移动端结合Vuex实现简单loading加载效果
一.rem之px2rem适配 前言:相信许多小伙伴上手移动端时面对各式各样的适配方案,挑选出一个自己觉得简便.实用.高效的适配方案是件很纠结的事情. 深有体会... 经过多个移动端项目从最初的 vie ...
- vuex最简单的
https://segmentfault.com/a/1190000009404727 "dependencies": { "axios": " ...
随机推荐
- jmeter性能分析
1.硬件要求:包括客户端和服务端的cpu,mem,network,disk等,这些硬件设备必须满足性能测试的前提下,才能进行性能测试,否则得到的各项指标不一定是正确的 2.场景分析: 测试前的准备工作 ...
- 【数据结构】Hash表
[数据结构]Hash表 Hash表也叫散列表,是一种线性数据结构.在一般情况下,可以用o(1)的时间复杂度进行数据的增删改查.在Java开发语言中,HashMap的底层就是一个散列表. 1. 什么是H ...
- oracle 11g 下载安装 使用记录
Oracle 11g 使用记录 1.下载oracle快捷安装版: (1)下载连接:https://pan.baidu.com/s/1ClC0hQepmTw2lSJ2ODtL7g 无提取码 (2)去 ...
- JavaScript之对象基础
现实世界是由无数的事物或对象组成,事物都有各独特的属性和一些动作行为,一般我们可以通过事物的某些特征或行为动作描述它.JavaScript中也是如此,JavaScript对象是多个键值对的集合,键我们 ...
- Java中自定义注解类,并加以运用
在Java框架中,经常会使用注解,而且还可以省很多事,来了解下自定义注解. 注解是一种能被添加到java代码中的元数据,类.方法.变量.参数和包都可以用注解来修饰.注解对于它所修饰的代码并没有直接的影 ...
- supervisor模块学习使用
supervisor组件 supervisord supervisord是supervisor的服务端程序. 启动supervisor程序自身,启动supervisor管理的子进程,响应来自clien ...
- Centos 7 配置tomcat服务器
1.首先查看当前系统版本 uname -a 2.安装之前查看系统是否安装了java rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没 ...
- Postman 之 HTTP Multipart/form-data 调试
无论是前端,还是后端开发,HTTP 接口的使用率实在是太高了.开发好了特定的 HTTP 接口,没有一个好的测试工具,怎么可以呢? 而 Postman 就是一款好用的爱不释手的测试工具,谁用谁说爽. 接 ...
- redis 主从复制和哨兵模式(二)
Redis 主从复制 为了分担单机 redis 的数据服务压力,需要进行读写分离,所以搭建 redis 的主从结构,主节点负责写,从节点负责读,主节点定期把数据同步到从节点. 配置主从 # 配置文件中 ...
- Debezium SQL Server Source Connector+Kafka+Spark+MySQL 实时数据处理
写在前面 前段时间在实时获取SQLServer数据库变化时候,整个过程可谓是坎坷.然后就想在这里记录一下. 本文的技术栈: Debezium SQL Server Source Connector+K ...