vuejs怎么实现全局状态管理
在vuejs中可以利用vuex实现全局状态管理;Vuex是一个专为Vue.js应用程序开发的状态管理模式,可以用来管理全局数据,可以管理复杂应用的数据状态,比如兄弟组件的通信、多层嵌套的组件的传值等等。
本教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。
vuex全局状态管理
Vuex
是一个专为Vue.js
应用程序开发的状态管理模式。可以管理复杂应用的数据状态,比如兄弟组件的通信、多层嵌套的组件的传值等等。
通俗的来说vuex就是全局数据管理,用来管理全局数据的,vue原本的数据管理只能父子组件之间传递数据,并且不方便,使用vuex可以进行全局数据管理,将所有数据存储到vuex中,使用时调用。
vuex的核心:
- state
- mutations
- actions
- getter
Vuex的用法
安装并使用vuex
安装
1.在项目中进行安装
npm install vuex --save
2.新建一个store.js文件
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { //存放初始数据 count: 0 }, mutations: { //存放修改数据的方法 increment (state) { state.count++ } } })
使用数据
方法一:使用$store调用
在组件中直接使用this.$store.state调用数据
this.$store.state.数据名
方法二:导入mapState,在组件中将数据展开映射,需要写到计算属性中,使用的时候直接写 count
就行
//先导入mapState import {mapState} from 'vuex' computed:[ ...mapState(['count']) ]
在对数据进行操作时,不能直接调用state的数据,如果要修改数据,需要在mutation里写方法,目的就是方便查找哪里除了问题
Mutations的作用与使用方法
mutations里面就是写对数据进行操作的方法的
mutations: { //存放修改数据的方法 add(state) { state.count++ } }
使用方式一:
触发mutations函数,使用commit调用里面的方法名
this.$store.commit这是触发mutation的第一种方式
methods:{ handle(){ this.$store.commit('add') } }
mutations传参mutation的方法里可以传递两个参数,第一个就是state,第二个是自定义的参数payload
mutations: { //存放修改数据的方法 addN(state,N) { state.count+=N } }
调用是在组件的方法里
methods:{ handle2(){ //触发mutation并传参 this.$store.commit('addN',4) } }
使用方法二
在组件中导入vuex里的mapMutations函数
mapMutations(['sub'])
是对里面的方法与store里的方法进行映射
...是展开操作符
import {mapMutations} from 'vuex' methods:{ //将方法名写在[]里 ['addN','sub'] ...mapMutations(['sub']) btnhandle(){ //调用时直接写this.方法名 this.sub() //当传入参数时,直接写这个参数,不需要写state this.addN(4) } }
注意:在Mutation函数里不能写异步代码;比如写定时函数,虽然页面会改变,但是实际状态数值不会变。于是就有了actions
Actions的用法
Action用于处理异步任务。
如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发Mutation的方式间接变更数据.
在store里与mutations同级写一个actions:{ } 在它里面调用mutations的方法,然后在组件中触 发Actions
mutations: { //存放修改数据的方法 add(state) { state.count++ } }, actions:{ //context是上下文 addAsync(context){ setTimeout(()=>{ //调用add方法,actions中不能直接修改state中的数据,只有mutation有这个权力 context.commit('add') }) } }
使用actions要在组件中使用dispatch进行触发
btnHandle(){ //dispatch专门触发action this.$store.dispatch('addAsync') }
actions传递参数
在store的actions里和mutations都要写形参
mutations: { //传参 addN(state,n) { state.count+=n } }, actions:{ //context是上下文 addAsync(context,n){ setTimeout(()=>{ //调用add方法,并传参 context.commit('addN',n) }) } }
在组件中写实参
btnHandle(){ //dispatch专门触发action,并传入参数 this.$store.dispatch('addAsync',5) }
第二种是展开并映射引入mapActions
//引入方法 import {mapActions} from 'vuex methods:{ //映射actions ...mapActions(['addAsync']) btnhandle(){ //调用对应的actions this.addAsync() } } //也可以不写btnhandle方法了直接将映射的方法名写在点击操作上
注意:在组件中调用actions方法,在actions中使用commit调用mutations方法
getters
- Getter用于对Store中的数据进行加工处理形成新的数据。不会修改原数据
- Getter可以对Store中已有的数据加工处理之后形成新的数据,类似Vue的计算属性。
- Store中数据发生变化,Getter的数据也会跟着变化.
state:{ count:0 }, getters:{ showNum(state){ return '当前最新的数据是:'+state.count } }
第一种调用方式:this.$store.getters.方法名
this.$store.getters.showNum
第二种调用方式:映射展开,在computed中映射
import {mapGetters} from 'vuex' computed:{ ...mapGetters(['showNum']) }
总结
-
state
是存放初始数据,进行数据初始化的,最好不要在组件里直接调用state -
mutations
里面是存储对数据进行操作的方法,但是不能进行异步操作 -
actions
里面是进行异步操作的方法 -
getters
用于对Store中的数据进行加工处理形成新的数据
相关推荐:《vue.js教程》
以上是vuejs怎么实现全局状态管理的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用Vue.js和Kotlin语言开发安卓应用的一些技巧随着移动应用的普及和用户需求的不断增长,安卓应用的开发越来越受到开发者的关注。在开发安卓应用时,选择合适的技术栈至关重要。近年来,Vue.js和Kotlin语言逐渐成为安卓应用开发的热门选择。本文将介绍使用Vue.js和Kotlin语言开发安卓应用的一些技巧,并给出相应的代码示例。一、搭建开发环境在开始

使用Vue.js和Python开发数据可视化应用的一些技巧引言:随着大数据时代的到来,数据可视化成为了一种重要的解决方案。而在数据可视化应用的开发中,Vue.js和Python的组合能够提供灵活性和强大的功能。本文将分享一些使用Vue.js和Python开发数据可视化应用的技巧,并附上相应的代码示例。一、Vue.js简介Vue.js是一款轻量级的JavaSc

如何使用PHP和Vue.js实现图表上的数据筛选和排序功能在网页开发中,图表是一种非常常见的数据展示方式。使用PHP和Vue.js可以轻松实现图表上的数据筛选和排序功能,使用户能够自定义查看图表上的数据,提高数据的可视化效果和用户体验。首先,我们需要准备一组数据供图表使用。假设我们有一个数据表格,包含姓名、年龄和成绩三列,数据如下:姓名年龄成绩张三1890李

使用Vue.js和Perl语言开发高效的网络爬虫和数据抓取工具近年来,随着互联网的迅猛发展和数据的日益重要,网络爬虫和数据抓取工具的需求也越来越大。在这个背景下,结合Vue.js和Perl语言开发高效的网络爬虫和数据抓取工具是一种不错的选择。本文将介绍如何使用Vue.js和Perl语言开发这样一个工具,并附上相应的代码示例。一、Vue.js和Perl语言的介

Vue.js与Lua语言的融合,构建游戏开发的前端引擎的最佳实践和经验分享引言:随着游戏开发的不断发展,游戏前端引擎的选择成为了一个重要的决策。在这些选择中,Vue.js框架和Lua语言都成为了众多开发者的关注点。Vue.js作为一款流行的前端框架具有丰富的生态系统和便捷的开发方式,而Lua语言则因其轻量级和高效性能在游戏开发中得到广泛应用。本文将探讨如何将

如何使用Vue实现仿QQ聊天气泡特效在现如今的社交时代,聊天功能已经成为了手机应用和网页应用的核心功能之一。而聊天界面中最常见的元素之一就是聊天气泡,它可以清晰地将发送者和接收者的信息区分开来,有效地提高了信息的可读性。本文将介绍如何使用Vue实现仿QQ聊天气泡特效,以及提供具体的代码示例。首先,我们需要创建一个Vue组件来表示聊天气泡。组件包含两个主要部分

如何使用Vue.js和Java开发大数据分析和处理的解决方案的步骤和实践经验大数据分析和处理已经成为现代企业在决策制定和业务发展中不可或缺的重要环节。为了更高效地进行大数据的分析和处理,我们可以利用Vue.js作为前端框架和Java作为后端开发语言来开发一套完整的解决方案。本文将会介绍如何使用Vue.js和Java开发大数据分析和处理的解决方案,并附上代码示

如何在PHP和Vue.js中实现可交互的热力图统计热力图(Heatmap)是一种以热力图的形式展示数据分布和集中度的可视化方式。在Web开发中,常常需要将后端数据和前端展示结合起来,实现可交互的热力图统计功能。本文将介绍如何在PHP和Vue.js中实现这一功能,并提供相应的代码示例。第一步:后端数据的准备首先,我们需要准备用于生成热力图的数据。在PHP中,我
