vuex基础语法、state代码示例、mutations代码示例

本文主要是介绍vuex基础语法、state代码示例、mutations代码示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、vuex基础语法

1.简介

Vuex 是一个专为 Vue.js 应用程序开发的状态(数据)管理模式。

简单来说就是方便管理管理组件之间的数据共享,原来我们那种父传子、子传父、兄弟组件传值的方式在小型项目中还能应付过来,如果是项目比较复杂,还是建议使用vuex使用数据共享。

2.基础使用步骤

vuex的使用步骤如下:

1.安装vuex

npm install vuex --save

2.导入vuex

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

3.创建store对象

state中就是全局共享的数据4

const store=new Vuex.Store({state:{count:0;}
})

4.把store对象挂载到vue实例中

new Vue({el:"#app",render:h=>h(app),router,store
})

备注 我们创建一个练习项目文件夹,注意配置的时候选择安装vuex即可,它会自动生成store文件夹,里面的index.js就是存储的核心文件。

3.state设置共享数据

组件中使用共享数据的语法1:

this.$store.state.数据变量名

组件中使用共享数据的语法2:

import {mapState} from 'vuex'  导入mapState函数把全局state中的数据映射为当前组件的计算属性
computed:{...mapState(['变量名'])
}

 

4.mutations定义修改数据方法 

组件要修改数据建议用mutations

vuex中不建议子组件直接修改全局的store中的共享数据,所以我们要是想修改数据的时候建议使用mutations,便于统一管理。

mutations中定义处理逻辑的方法

export default new Vuex.Store({state: {num: 0},mutations: {方法名(state) {//对于数据的处理逻辑//其中方法中的state形参就是上面的state共享数据对象;}},actions: {},modules: {}
});

组件中通过methods中的方法调用mutations中的方法

methods: {this.$store.commit('方法名')}

二、state代码示例 

初始化一个测试项目demo1,注意安装vuex

components中新建两个子组件Son1.vue和Son2.vue

App.vue中引入两个子组件并注册

<template><div id="app"><Son1></Son1><Son2></Son2></div>
</template><script>
import Son1 from "./components/Son1.vue";
import Son2 from "./components/Son2.vue";export default {name: "App",components: {Son1,Son2}
};
</script>
  • store/index.js新建公共的数据模型
export default new Vuex.Store({state: {num: 0},。。。
});
  • 方式1引入公共数据 Son1.vue中使用num
<template><div>子组件1<p>{{$store.state.num}}</p></div>
</template>
  • 方式2引入公共数据
<!-- 子组件1 -->
<template><div>子组件1<p>{{num}}</p></div>
</template><script>
import { mapState } from "vuex";
export default {data() {return {};},computed: {...mapState(["num"])}
};
</script>

同理,Son2.vue也是如此使用。 

三、mutations代码示例

1.mutations第一种使用方式

store/index.js中定义如下:

import Vue from "vue";
import Vuex from "vuex";Vue.use(Vuex);export default new Vuex.Store({state: {num: 0},mutations: {addHandle(state) {state.num++;},addHandle2(state, arg) {state.num += arg;}},actions: {},modules: {}
});

Son1.vue中调用如下:

<!-- 子组件1 -->
<template><div>子组件1<button @click="clickHandle">点击增加1</button><button @click="clickHandle2">点击传递参数</button><p>{{$store.state.num}}</p></div>
</template><script>
export default {data() {return {};},methods: {clickHandle: function() {this.$store.commit("addHandle");},clickHandle2: function() {this.$store.commit("addHandle2", 2);}}
};
</script>

 此时Son1.vue中点击按钮1,页面显示的数字就会增加1,点击按钮2,页面显示的数字就会增加2.

2.mutations第二种使用方式

store/index.js中定义如下:

import Vue from "vue";
import Vuex from "vuex";Vue.use(Vuex);export default new Vuex.Store({state: {num: 0},mutations: {addHandle(state) {state.num++;},addHandle2(state, arg) {state.num += arg;}},actions: {},modules: {}
});

Son1.vue中调用如下:

<!-- 子组件1 -->
<template><div>子组件1<button @click="clickHandle">点击增加1</button><button @click="clickHandle2">点击传递参数</button><p>{{$store.state.num}}</p><!-- <p>{{num}}</p>  --></div>
</template><script>
import { mapMutations } from "vuex";
export default {data() {return {};},methods: {...mapMutations(["addHandle", "addHandle2"]),clickHandle: function() {this.addHandle();},clickHandle2: function() {this.addHandle2(2);}}
};
</script>

这篇关于vuex基础语法、state代码示例、mutations代码示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569797

相关文章

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码