Vuex如何脚本化生成mutations,优势和业务便利性在哪里?

本文主要是介绍Vuex如何脚本化生成mutations,优势和业务便利性在哪里?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说脚本之前,先看一下这些繁琐的操作是否在你的vue项目中存在?

1.在modules下每新生成一个文件就要新建 state  getters mutations actions 

2.在每个需要用到vuex的地方进行store 引入

3.每次更改state时, 都要防止mutations 函数名称打错, 或频繁到mutations 下的函数中去ctrl c ,再到commit 里去 ctrl v 

如果你正在被上面的繁琐工作掣肘,那么就和我一起来看一下,如何在vue项目中优雅的使用Vuex吧。

我们常规操作下,modules 下的  store 文件都是这样写的:

user.js

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({state: {user: 'xiaoming',age: '18'},getters: {getMessage(state) {return state.user + 'is' + age + 'years old'}},mutations: {set_user:(state, user) => {state.user = user},set_age:(state, age) => {state.age = age}},actions: {changeUser({commit}, res) {commit('set_user', res.user)commit('set_age', res.age)}}
})

如上:

1.我们每添加一个state 的属性,文件中的 getters  mutations actions  如果业务需要,都需要我们手动配套生成,这就是一个极其繁琐的操作

2.我们在组件中使用该store 时,需要将 如果需要读取state , 或 改变state, 需要在组件中引入Map辅助函数 ,使用 mapXXX   来操作

3.使用commit 改变state时, 需要手动键入mutations 的函数名,因此会频繁的使用c v大法保证函数名不出错

优雅的使用Vuex:

vuex => modules => user.js

export default {state: {user: 'xiaohong',age: '12'}
}

vuex => store.js

import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'Vue.use(Vuex)var state = {}
var getters = {}
var mutations = {}
var modules= {user
}/**
*将obj内的值添加到state中
*{object} state store的共享数据
*{object} obj 组件更改的数据对象
*/
var setObjToState = function(state, obj) {for(var f in obj) {state[f] = obj[f]}
}//自动生成mutations 函数
for (var m in modules) {modules[m].mutations = modules[m] || {}modules[m].mutations[m + 'SetMutations'] = setObjToState
}export default new Vuex.store({state,getters,mutations,modules
})

在项目的 main.js  内:

import Vue from 'vue'
import store from './vuex/store'new Vue({components: {app},store,template: '<App/>
}).$mount(#app')

在组件内:

<template><div id="app"></div>
</template><script>
export default {data () {user: 'jiajia',age: '6'},methods: {changeUser () {let _t = this//无论在 store 的 state 里新增多少属性, 在改变state时只需用通过 模块名+SetMutations 进行调用即可_t.$store.commit('userSetMutations', {user: _t.user,age: _t.age})}}
}
</script>

可以看到在store.js  优化后, 无论在 store 的 state 里新增多少属性,都无需配套新增mutations 等函数, 而且在改变state时只需用通过 模块名+SetMutations 进行调用即可,不用担心函数名键入错误,或频繁使用cv大法。

内容原创,转载注明出处。

这篇关于Vuex如何脚本化生成mutations,优势和业务便利性在哪里?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结