iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >super-vuex怎么用
  • 953
分享到

super-vuex怎么用

2024-04-02 19:04:59 953人浏览 安东尼
摘要

小编给大家分享一下super-Vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vuex与super-vuexsupe

小编给大家分享一下super-Vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

vuex与super-vuex

super-vuex是一套用于简化Vuex的数据架构

适用场景

在繁重的中后台项目中,引入vuex的作用如下:

  1. 全局数据共享,组件数据逻辑解耦

  2. 数据业务接口分离

  3. 数据模块化管理,利于多人协作

super-vuex在这三种需求下都是和原生vuex的功能相同,在vuex原有功能上将mutation和action的定义和传导机制改良为函数的写法,在简易数组改动逻辑的使用上提供push、pop、shift、unshift、splice的方法,可以在与、组件中自动地完成mutation,以及数据引用的路径化,你可以通过load.allow去取到load模块下的allow属性。

使用体验

下面通过简单的demo比较下原生vuex和super-vuex使用细节上的不同。

一、状态模块化

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。

Vuex:

const moduleA = {
 state: { ... },
 mutations: { ... },
 actions: { ... },
 getters: { ... }
}

const moduleB = {
 state: { ... },
 mutations: { ... },
 actions: { ... }
}

const store = new Vuex.Store({
 modules: {
  a: moduleA,
  b: moduleB
 }
})

store.state.a // -> moduleA 的状态
store.state.b // -> moduleB 的状态

super-vue

自动将mutation逻辑执行,因此异步逻辑写在commit中即可,相比之下节省了代码量

import { ChildVuex } from "super-vuex";

const child = new ChildVuex('...');

child.value = { ... };

child.setCommit = {...};



const Main = new SuperVuex();

Main.setModule(child);

export default Main.init();

路径式获取子模块数据

数据路径,在之后的所有方法中,数据路径至关重要,它是一个数据的直观路径字符串,也就是上面[ChildVuex].value 数据定义的数据路径。

'load.allow'

可以取到load模块的allow属性

二、操作方法

super-vuex的操作方法上告别了以往同步数组操作的繁杂过程,比如在以往的vuex模式中实现一个对数组的操作是效率偏低的,先在mutation中定义方法操作,后在action中commit或是在组件中commit,super-vuex很好的解决了这个问题,提供了一系列基础的数组操作方法让你操作数组非常简单。

Vuex:

// 提交一个commit
store.commit({
 type: 'increment',
 amount: 10
})

mutations: {
 // push
 increment (state, n) {
  state.arr = = [...state.arr, n]
 }
 // pop
 popArr(state) {
   state.arr = arr.pop()
 }
 // shift
 shiftArr(state) {
   state.arr.shift()
 }
 // unshift
 unshift(state) {
   state.arr.unshift('students', {
    name: 'huaping1',
    age: 302
   })
 }
 // deleteStudent
 deleteStudent(state) {
  state.arr.splice('students', 0, 1);
 },
}
...

super-vuex:

super-vuex在commit这层提供了一系列的操作api,提高了数据传递的效率

  child.setCommit('increment', (state, n) => {
    state.count += n;
});
changeName() {
  this.$store.user.commit('name', 'someone');
},
changeAllow() {
  this.$store.user.commit('load.allow', false);
  
},
pushStudent() {
  this.$store.user.push('students', {
    name: 'huaping',
    age: 300
  });
},
pushSubs() {
  this.$store.sub.push('subs', 10);
},
popSubs() {
  this.$store.sub.pop('subs');
},
unshiftStudent() {
  this.$store.user.unshift('students', {
     name: 'huaping1',
     age: 302
  });
},
shiftStudent() {
  this.$store.user.shift('students')
},
deleteStudent() {
  this.$store.user.splice('students', 0, 1);
},
gets() {
  his.$store.user.dispatch('load.data');
}

方法列表function

  1. get(name):获取一个getter属性;例:store.sub.get('subs')

  2. commit(name, data):提交处理一个属性;例:store.user.commit('age', data)

  3. push(name, ...data):提交一个数据的push行为

  4. pop(name):提交一个数据的pop行为

  5. unshift(name, ...data):提交一个数据的unshift行为

  6. shift(name): 提交一个数据的shift行为

  7. splice(name, arguments):用法同Array.prototype.splice

  8. dispatch(name, data):个async/await型的调用函数。与Vuex中的dispatch一致,用于出发setAction定义的行为

不仅如此,super-vuex还提供自定义模式可以覆盖掉默认给你提供的api,

child.setPushCommit(path, callback<(state, data)>);
child.setUnShiftCommit(path, callback<(state, data)>);
child.setPopCommit(path, callback<(state)>);
child.setShiftCommit(path, callback<(state)>);
  
// 注意splice使用方法,在`data`中是一个数组
child.setSpliceCommit(path, callback<(state, data)>);
  1. [ChildVuex].setPushCommit 数组的push操作行为

  2. [ChildVuex].setUnShiftCommit 数组的unshift操作行为

  3. [ChildVuex].setSpliceCommit 数组的splice操作行为

  4. [ChildVuex].setPopCommit 数组的pop操作行为

  5. [ChildVuex].setShiftCommit 数组的Shift操作行为

三、Getter

在组件内使用store中的数据,vuex通常是把getter放入computed中,使组件产生数据响应。

Vuex:

const store = new Vuex.Store({
 state: {
  todos: [
   { id: 1, text: '...', done: true },
   { id: 2, text: '...', done: false }
  ]
 },
 getters: {
  doneTodos: state => {
   return state.todos.filter(todo => todo.done)
  }
 }
})


// in component
computed: {
 // 使用对象展开运算符将 getter 混入 computed 对象中
  ...mapGetters([
   'doneTodosCount',
   'anotherGetter',
   // ...
  ])
 }

super-vuex:

this.store.doneTodos.get('todos')

非常简约地完成getter,响应式getter

当然想使用原生的getter也是OK的,辅助方法adjFunction(对ChildVuex自动生成的属性进行覆盖或自定义)

[ChildVuex].setGetter(path, cb)

自定义或覆盖模块中相应getter的属性,相当于原生vuex的getter属性。

覆盖原有的getter

child.setGetter('load.total', state => {
  return state.load.total + 100;
});

以上是“super-vuex怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: super-vuex怎么用

本文链接: https://www.lsjlt.com/news/77533.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • super-vuex怎么用
    小编给大家分享一下super-vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vuex与super-vuexsupe...
    99+
    2024-04-02
  • 怎么用vuex
    这篇文章给大家分享的是有关怎么用vuex的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先贴上官方文档,https://vuex.vuejs.org/guide/modules....
    99+
    2024-04-02
  • react中怎么使用super
    今天小编给大家分享的是react中怎么使用super,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。 react中可以使用...
    99+
    2024-04-02
  • vuex怎么用
    小编给大家分享一下vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是Vuex?vuex是一个专门为vue.js设...
    99+
    2024-04-02
  • es6中的super怎么用
    这篇“es6中的super怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6中的s...
    99+
    2024-04-02
  • 怎么在java中调用super
    怎么在java中调用super?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发...
    99+
    2023-06-14
  • Java中super关键字怎么用
    本篇内容介绍了“Java中super关键字怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!super有什么用?(1)当子类中构造方法第一...
    99+
    2023-06-29
  • Java super关键字怎么使用
    本文小编为大家详细介绍“Java super关键字怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java super关键字怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.s...
    99+
    2023-07-02
  • python super()函数怎么使用
    这篇文章主要介绍“python super()函数怎么使用”,在日常操作中,相信很多人在python super()函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python&...
    99+
    2023-06-21
  • vuex中Getter怎么用
    这篇文章给大家分享的是有关vuex中Getter怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属性...
    99+
    2023-06-20
  • es6中super关键字怎么用
    这篇文章主要为大家展示了“es6中super关键字怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“es6中super关键字怎么用”这篇文章吧。具体如下:su...
    99+
    2024-04-02
  • Java中的this和super怎么用
    本篇内容主要讲解“Java中的this和super怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的this和super怎么用”吧!  在Java中有两个非常特殊的变量:this和...
    99+
    2023-06-03
  • Vue.js中Vuex怎么用
    小编给大家分享一下Vue.js中Vuex怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、安装并引入 Vuex项目结构:首...
    99+
    2024-04-02
  • python中的super().__init__()怎么使用
    本篇内容主要讲解“python中的super().__init__()怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中的super().__init__()怎么使用”吧!su...
    99+
    2023-07-05
  • Python中的super函数怎么用
    这篇文章主要介绍了Python中的super函数怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中的super函数怎么用文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • 怎么利用vuex-persistedstate将vuex本地存储
    本篇内容主要讲解“怎么利用vuex-persistedstate将vuex本地存储”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用vuex-persistedstate将vuex本地存储”...
    99+
    2023-06-30
  • vuex的Mutation怎么使用
    这篇“vuex的Mutation怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vu...
    99+
    2024-04-02
  • vuex中mutations怎么调用
    这篇文章主要介绍vuex中mutations怎么调用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mutations的调用方法直接通过$store.commit调用<button @click=&qu...
    99+
    2023-06-29
  • Java的this和super关键字怎么用
    本文小编为大家详细介绍“Java的this和super关键字怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的this和super关键字怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、“ t...
    99+
    2023-06-30
  • 详解怎么用Java的super关键字
    Java的super关键字 当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法。为了解决这个问题,在Java中专门提供了一个super关键字来访问父类的成员,例如访问父类...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作