vuex的使用步骤


Posted in Vue.js onJanuary 06, 2021

一、使用Vuex的目的

实现多组件状态管理。多个组件之间需要数据共享时,Vuex是个很好的帮手哦

二、Vuex 的五大核心

其中state和mutation是必须的,其他可根据需求来加

1.state

负责状态管理,类似于vue中的data,用于初始化数据

2.mutation

专用于修改state中的数据,通过commit触发

3.action

可以处理异步,通过dispatch触发,不能直接修改state,首先在组件中通过dispatch触发action,然后在action函数内部commit触发mutation,通过mutation修改state状态值

4.getter

Vuex中的计算属性,相当于vue中的computed,依赖于state状态值,状态值一旦改变,getter会重新计算,也就是说,当一个数据依赖于另一个数据发生变化时,就要使用getter

5.module

模块化管理

三、Vuex 怎么用

1.首先当然要安装啦 (假设你已经安装了vue)

npm install vuex

2.引入并使用Vuex

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

3.实例化一个Vuex对象--Store状态机 并抛出

const store = new Vuex.Store({})

export defaul store

4.在main.js中引入并注入Vuex

import Vue from 'vue'
import App from './App.vue'
import store from './store'
new Vue({
 render: h => h(App),
 store
}).$mount('#app')

5.通过this.$store访问Vuex的数据

到此,Vuex已准备完成,接下来就根据自己需要加入数据吧~

四、示例代码

1.首先准备至少两个组件,不然怎么数据共享呢

<template>
 <div>
 我是组件1
 </div>
</template>

<script> export default {
 
} </script>
<style scoped>
</style>
<template>
 <div>
 我是组件2
 </div>
</template>

<script> export default {
 
} </script>
<style scoped>
</style>

2.在store.js中写Vuex相关代码

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
 state: {},  //状态管理
 mutations: {}, //修改state
 actions: {}, //异步操作
 getters:{},  //计算属性
 modules: {}  //模块
})
export default store

注:别忘了在main.js里注入store呀(参考上面第三大点的第4小点)

3.假设咱们现在需要共享一个数据data,初始值为0

···
const store = new Vuex.Store({
 state: {
  data:0
 }  
})
···

4.组件1和组件2都可以通过$store拿到data

<div>
 我是组件1
 {{this.$store.state.data}} //浏览器中此处会显示data的值
 </div>
<div>
 我是组件2
 {{this.$store.state.data}} //浏览器中此处会显示data的值
 </div>

5.那么怎么修改data呢,这时候就需要mutation出马了

mutation实质是一个函数,接收state和调用时传来的params参数

mutations: {
 changeDataMut(state,params){ 
  state.data = params
 }
}

6.mutation有了,接下来就需要在组件中调用它,记得要用commit触发

<template>
 <div>
 我是组件1
 <button @click='changeData'>改数据</button>
 </div>
</template>
<script> export default {
 data(){
  return {
   changeData(){
   // 通过commit 触发 mutation 并传参
    this.$store.commit('changeDataMut',10) //此时组件1和组件2中data都是10啦
   }
  }
 }
} </script>

7.action怎么用?

  • action也是函数。
  • 前面已经说到,action不能直接修改state,首先要在组件中通过dispatch触发action,然后在action函数内部commit触发mutation,通过mutation修改state状态值。
  • 注意action的参数
actions: {
 changeDataAct(context,params){ //context是一个对象,从它里面把咱们需要的commit方法解构出来
  let {commit} = context
  commit('changeDataMut',params)
 }
}

这时候可以在组件中触发action了,注意使用dispatch

<template>
 <div>
 我是组件2
 <button @click='changeData'>改数据</button>
 </div>
</template>
<script> export default {
 data(){
  return {
   changeData(){
    // 通过dispatch 触发 action 并传参
    this.$store.dispatch('changeDataAct',100)//此时data就变成100啦,并且组件1和组件2是同步的
   }
  }
 }
} </script>

8.getter的用法

  • getter 计算属性 ,依赖于state值,需要return
  • 现在咱们假设一个值double,它是data的两倍,并且会随着data发生改变
getters:{
 doubleGet(state){
  return state.data*2
 }
}
  • 我们可以在组件中使用它了
<div>
 我是组件2
 {{this.$store.getters.doubleGet}}
</div>

以上就是vuex的使用步骤的详细内容,更多关于vuex 使用的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
vue3.0实现插件封装
Dec 14 Vue.js
Vue3 实现双盒子定位Overlay的示例
Dec 22 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
vue自定义右键菜单之全局实现
Apr 09 Vue.js
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 #Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 #Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 #Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 #Vue.js
vue3弹出层V3Popup实例详解
Jan 04 #Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 #Vue.js
vue中父子组件的参数传递和应用示例
Jan 04 #Vue.js
You might like
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
Yii使用技巧大汇总
2015/12/29 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
JS实现在线ps功能详解
2019/07/31 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
numpy自动生成数组详解
2017/12/15 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
Python如何将装饰器定义为类
2020/07/30 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
瑜伽国际:Yoga International
2018/04/18 全球购物
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
捐助倡议书范文
2014/04/15 职场文书
班委竞选演讲稿
2014/04/28 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android
MySQL详细讲解变量variables的用法
2022/06/21 MySQL