【译】Vue 的小奇技(第六篇):在 Vue.js 2.6 中不使用 Vuex 来创建 store

栏目: JavaScript · 发布时间: 5年前

内容简介:特别声明:本文是作者Alex Jover 发布在VueDose 上的一个系列。版权归作者所有。译者在翻译前已经和作者沟通得到了翻译整个系列的授权。

特别声明:本文是作者Alex Jover 发布在VueDose 上的一个系列。

版权归作者所有。

译者在翻译前已经和作者沟通得到了翻译整个系列的授权。

为了不影响大家阅读,获得授权的记录会放在本文的最后。

Vue.js 2.6 介绍了一些新的特性,其中我喜欢的一个就是全局 API:Vue.observable

现在你可以在组件作用域之外创建响应式对象。并且当你在组件里使用它们时,它会在发生改变时触发相应的渲染更新。

基于此,你可以在不需要 vuex 的情况下就能创建一个简易的 stores,非常适合于一些简单的场景,比如说仅需要跨组件共享外部状态。

举个例子,我们现在就来创建一个简单的计算器来暴露 state 给我们的 store。

首先创建 store.js 文件:

import Vue from "vue";

export const store = Vue.observable({
  count: 0
});
复制代码

如果你熟悉并喜欢 mutations 和 actions 的设计思想,那么你也可以创建一个简单的函数来更新数据:

import Vue from "vue";

export const store = Vue.observable({
  count: 0
});

export const mutations = {
  setCount(count) {
    store.count = count;
  }
};
复制代码

现在你只需要在组件中使用它,就像使用 Vuex 一样地去获取 state,我们将会用到计算属性和调用 mutations 的实例方法。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="setCount(count + 1);">+ 1</button>
    <button @click="setCount(count - 1);">- 1</button>
  </div>
</template>

<script>
  import { store, mutations } from "./store";

  export default {
    computed: {
      count() {
        return store.count;
      }
    },
    methods: {
      setCount: mutations.setCount
    }
  };
</script>
复制代码

如果你想要亲自试试这个例子,我已经为你在CodeSandbox 上编译好了,去看看吧!

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


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

查看所有标签

猜你喜欢:

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

黑客与画家

黑客与画家

[美] Paul Graham / 阮一峰 / 人民邮电出版社 / 2011-4 / 49.00元

本书是硅谷创业之父Paul Graham 的文集,主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。书中的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解我们这个时代,迫使读者独立思考。 本书适合所有程序员和互联网创业者,也适合一切对计算机行业感兴趣的读者。一起来看看 《黑客与画家》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具