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 相关文章推荐
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
vue+element UI实现树形表格
Dec 29 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
vue实现在data里引入相对路径
Jun 05 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 Directory 函数的详解
2013/03/07 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
js实现的牛顿摆效果
2015/03/31 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
原生js生成图片验证码
2020/10/11 Javascript
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
python飞机大战游戏实例讲解
2020/12/04 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
法律工作求职自荐信
2013/10/31 职场文书
物流仓储计划书
2014/01/10 职场文书
学习十八大报告感言
2014/02/28 职场文书
协议书格式
2014/04/23 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
企业培训简报范文
2015/07/20 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
Python列表的索引与切片
2022/04/07 Python