在Vuejs项目中,我为什么不再使用Vuex管理全局状态?

2022-12-22 0 209

不可否认,vuex是Vuejs工程项目中十分常见的状况管理工作库,因此是非官方公司出品。只不过,vuex的结构设计存有两个小小瑕疵,是应用软件无法提供更多智能化交互,很多极短的英文名字,他们要读懂它,或是索性分页。这对JS此种弱类别词汇而言,并非较好的新体验,能说那个新体验很差劲。因此我下定决心,在我大部份较捷伊Vuejs工程项目中,逐渐移杀掉vuex;而新工程项目克列文无须采用vuex;

在Vuejs2.x中,他们采用Vue.observable建立状况,observable是两个可检视第一类,当透过它建立的第一类特性出现出现改变后,会促发快照的预览。实例标识符如下表所示:

/** 状况 */ export conststate = Vue.observable({/** 最新消息条目 */ notices: [], })

在Vuejs3.x中,他们采用reactive建立状况,reactive是两个积极响应式第一类,我们能指出它是近似于Vuejs2.x中observable的第一类,实例标识符如下表所示:

import { reactive } from vue /** 状况 */ export const state = reactive({ /** 通告条目 */messages: [], })

那时,他们同时实现了类似于vuex中state的小东西,因此,有时他们或许须要加进getters,实际上,getters的表述也比较简单,他们采用es5的原生植物get新闻稿。示例标识符如下表所示:

export const getters = { /** 表里最新消息数 */ get unreadMessageCount () { return state.messages.filter(_ =>!_.stateRead).length } }@returns{Promise<any[]>} */ export const getMessages = async () => { state.messages = (await request(/base/message/my/message/list)).data }

这是他们状况模块的主要构成部分:state,getters,actions;他们所用的文件名叫:store.js,最终,他们在公共模块common/index.js中将store.js中的大部份标识符作为store变量导出,标识符如下表所示:

export * as store from ./lib/store

common/index.js模块还有更多的导出,他们大部份的公用标识符都透过该模块采用,其它部分导出标识符如下表所示:

export * from ./lib/consts export * from ./lib/modal export * from ./lib/utils export * from ./lib/tree export * from ./lib/axios export * from ./lib/route-utils export { default aseventBus }from ./lib/event-bus export { default as vuePlugins } from ./lib/vue-plugins export { default as wsSubscribe } from ./lib/ws-subscribe

那时,他们能采用store了。他们这里以Vuejs3.x为例,Vue2.x写法不一样,我们应该都能理解;首先从common/index.js引入store,他们建立了变量unreadCount用于在模板中采用。我们能忽略和本篇文章无关的标识符,实例标识符如下表所示:

<template> <header :class=“cls”> <div :class=“`${cls}_right`”> <el-badge :value=“unreadCount” :hidden=“!unreadCount”> <el-link :icon=“ChatRound” :underline=“false” @click=“goMyMessages” /> </el-badge> </div> </header> </template> <script setup> import { computed } from vue import { store } from ../../common const unreadCount = computed(() => store.state.unreadMessageCount) </script>

那时,他们的应用软件对store及unreadCount是有智能化交互的,当他们的鼠标指针引入unreadCount的时候,会提示出它的数据类别及描述,他们在编写的时候也能获得标识符补全,避免拼写错误及提高开发效率。

在Vuejs项目中,我为什么不再使用Vuex管理全局状态?
在Vuejs项目中,我为什么不再使用Vuex管理全局状态?
在Vuejs项目中,我为什么不再使用Vuex管理全局状态?
在Vuejs项目中,我为什么不再使用Vuex管理全局状态?

这是本篇文章给我们分享的内容,希望我们都能理解!最后,我想再补充一句,如果你不在意应用软件的智能化交互和拼写补全,vuex或许适合你。我个人也不建议为了减少引入将store添加到Vue原型链或App实例上,这会丢失智能化交互和拼写补全等。感谢我们阅读!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务