【译】Vue 的小奇技(第八篇):两个鲜有人知的 Vuex 技巧

栏目: 编程语言 · 发布时间: 6年前

内容简介:这篇文章来自于一位很特别的受邀者:Nicolò Mezzopera,他是Pulilab 网站的开发者,一位真大神。我们去年还一起组织过一场在布达佩斯的关于 Vue.js 的线下交流会!如果你今年 4 月 12 号刚好就在维罗纳,他刚好会在Vue Day Italy 2019 会上发表演讲,这是你偶遇他的好机会哦 :wink:。介绍完了作者,我们来进入主题。

这篇文章来自于一位很特别的受邀者:Nicolò Mezzopera,他是Pulilab 网站的开发者,一位真大神。我们去年还一起组织过一场在布达佩斯的关于 Vue.js 的线下交流会!

如果你今年 4 月 12 号刚好就在维罗纳,他刚好会在Vue Day Italy 2019 会上发表演讲,这是你偶遇他的好机会哦 :wink:。

介绍完了作者,我们来进入主题。

当在我们 Vue.js 的组件中使用了 Vuex,除了映射功能的函数之外,我们好像忘记了它所暴露出来的其他有用的 API。

我们一起来看看可以利用它来干些什么。首先,还是先来创建一个基本的 store:

const store = new Vuex.Store({
  state: {
    count: 0
  },
  getters: {
    getCountPlusOne: state => state.count + 1
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  }
});
复制代码

Watch 方法

watch 是将 Vuex 与其他外部代码整合的最有用的方法,可以在你的 awesomeService 或者是在 catchAllAuthUtils 等等类似的服务中使用。

使用示例:

const unsubscribe = store.watch(
  (state, getters) => {
    return [state.count, getters.getCountPlusOne];
  },
  watched => {
    console.log("Count is:", watched[0]);
    console.log("Count plus one is:", watched[1]);
  },
  {}
);

// To unsubscribe:
unsubscribe();
复制代码

我们所做的就是在调用 vuex 的实例方法 watch 时,传入两个函数作为实参,第一个函数实参返回我们想要在 state 与/或 getters 上监听的属性;第二个函数实参是当属性值 state.countgetters.getCountPlusOne 有改变时,调用的回调函数。

这是用来结合 Vuex 与 react 或者 angular 甚至是 JQuery 代码时,非常有用的技巧。

可以在这个CodeSandbox 上查看例子。

SubscribeAction 方法

有时候,与其监听 store 中的一个属性改变,不如使用 subscribeAction 方法订阅一个特定的 action,比如像 loginlogout 之类的异步请求,这也是更有用的方案。

调用监听函数,在每一个 action 分发的时候调用指定的回调函数,并在其中调用自定义代码。

我们在每一个 action 的分发前以及完成后,来分别开始和停止全局的 spinner。

const unsubscribe = store.subscribeAction({
  before: (action, state) => {
    startBigLoadingSpinner();
  },
  after: (action, state) => {
    stoptBigLoadingSpinner();
  }
});

// To unsubscribe:
unsubscribe();
复制代码

讲完啦!

你可以在线阅读这篇原文,里面有可供复制粘贴的源代码。如果你喜欢这个系列的话,请分享给你的同事们!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Recipes 3rd Edition

Numerical Recipes 3rd Edition

William H. Press、Saul A. Teukolsky、William T. Vetterling、Brian P. Flannery / Cambridge University Press / 2007-9-6 / GBP 64.99

Do you want easy access to the latest methods in scientific computing? This greatly expanded third edition of Numerical Recipes has it, with wider coverage than ever before, many new, expanded and upd......一起来看看 《Numerical Recipes 3rd Edition》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码