详解Vue This$Store总结

详解Vue This.$Store总结

Vue.js是一款轻量级、高效的JavaScript框架,它本身没有提供全局状态管理机制。但是,vue系列的开发者们为我们写了一个插件——VueX,用来解决这个问题。本文将详细讲解Vue This.$Store总结。

VueX是什么?

VueX是一个用于state管理的应用程序状态管理模式。它使用了集中式存储管理数据,并以可预测方式处理应用程序的状态。通过VueX,我们可以方便地在不同的组件中共享状态,提高开发效率。

如何在Vue中使用VueX?

下面是使用VueX的基本步骤:

  1. 安装VueX
npm install vuex --save
  1. 在main.js文件中加入代码:
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
  1. 创建store对象
const store = new Vuex.Store({
  state: {...},
  mutations: {...},
  actions: {...},
  getters: {...}
})
  1. 将store对象注入到Vue实例中
new Vue({
  render: h => h(App),
  store,
}).$mount('#app')
  1. 使用store对象的状态属性

假如我们在store中定义了一个状态属性count,可以使用以下代码在组件中读取该状态属性:

computed: {
  ...mapState({
    count: state => state.count
  })
}

VueX的四大核心概念

State

State即应用程序的状态管理机制。我们将需要存储的数据放到一个全局的store中,每个组件可以通过$store.state来访问该对象的数据。

Mutation

Mutation用来管理状态的修改。改变store中数据的唯一方式就是提交mutation。

mutations: {
  increment (state) {
    state.count++
  }
}

Action

Action类似于mutation,但是Action除了修改状态之外,还可以触发其他的mutation。Action可以包含任意异步操作,而mutation则只能是同步的。

actions: {
  async fetchData ({commit}, url) {
    const data = await api.fetch(url)
    commit('setReslut', data)
  }
}

Getter

Getter用来对数据进行包装或计算。Getter是只读的,只会返回新的数据,不会修改原数据。

getters: {
  doubleCount (state) {
    return state.count * 2
  }
}

在组件中使用VueX

  1. 使用mapState辅助函数

mapState函数,将store中的状态映射为组件的计算属性。

computed: {
  ...mapState({
    count: state => state.count
  })
}
  1. 使用mapGetters辅助函数

mapGetters函数,将store中的getter映射为组件中的计算属性。

computed: {
  ...mapGetters([
    'doubleCount'
  ])
}

示例说明

示例1:使用VueX实现简单计数器

store.js中的代码

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    },
    decrement (state) {
      state.count--
    }
  },
  actions: {
    incrementAsync ({ commit }) {
      setTimeout(() => {
        commit('increment')
      }, 1000)
    }
  },
  getters: {
    doubleCount (state) {
      return state.count * 2
    }
  }
})

export default store

App.vue中的代码

<template>
  <div id="app">
    <h1>{{ count }}</h1>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementAsync">+ Async</button>
    <p>{{ doubleCount }}</p>
  </div>
</template>

<script>
  import { mapState, mapActions, mapGetters } from 'vuex'

  export default {
    name: 'App',
    computed: {
      ...mapState({
        count: state => state.count
      }),
      ...mapGetters([
        'doubleCount'
      ])
    },
    methods: {
      ...mapActions([
        'increment',
        'decrement',
        'incrementAsync'
      ])
    }
  }
</script>

示例2:使用VueX管理网站主题

store.js中的代码

const store = new Vuex.Store({
  state: {
    theme: 'dark'
  },
  mutations: {
    toggleTheme (state) {
      if (state.theme === 'dark') {
        state.theme = 'light'
      } else {
        state.theme = 'dark'
      }
    }
  }
})

export default store

App.vue中的代码

<template>
  <div :class="theme">
    <h1>Hello World</h1>
    <button @click="toggleTheme">Toggle Theme</button>
  </div>
</template>

<script>
  import { mapState, mapMutations } from 'vuex'

  export default {
    computed: {
      ...mapState({
        theme: state => state.theme
      })
    },
    methods: {
      ...mapMutations([
        'toggleTheme'
      ])
    }
  }
</script>

<style>
  .dark {
    background-color: #333;
    color: #fff;
  }

  .light {
    background-color: #fff;
    color: #333;
  }
</style>

以上是Vue This.$Store总结的详细介绍,希望读者们能够掌握VueX的基本使用方法和核心概念,以及如何在组件中使用VueX。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Vue This$Store总结 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue中fragment.js使用方法详解

    Vue中fragment.js使用方法详解 在前端开发中,我们经常需要在一个组件内部返回多个连续节点,并将它们包装在一个 DOM 元素中。在 Vue 中,我们可以使用 Fragment 实现这一操作。但是在 Vue 2.x 中,Fragment API 并没有提供支持,为了解决这个问题,我们可以使用 fragment.js 这个第三方库来帮助我们使用 Fra…

    Vue 2023年5月27日
    00
  • ElementUI时间选择器限制选择范围disabledData的使用

    为了让大家更好地理解“ElementUI时间选择器限制选择范围disabledData的使用”,我们将分为以下几个步骤进行详细讲解: 安装ElementUI 创建一个ElementUI时间选择器组件 使用disabledData属性,限制时间选择器的选择范围 示例一: <template> <el-date-picker v-model=&…

    Vue 2023年5月29日
    00
  • vue中是怎样监听数组变化的

    Vue中如何监听数组变化是一个非常常见的问题,下文将详细讲解如何监听和响应数组变化。 Vue2.x版本中数组的响应式原理 Vue2.x版本中采用了 Object.defineProperty 方法来实现数组的响应式,Vue将数组的一些修改原生方法(比如push、pop、shift等)进行了覆盖,使之成为可观测的。Vue 内部为每个数组设置了一个原型对象,继承…

    Vue 2023年5月28日
    00
  • vue中计算属性和方法的区别及说明

    Vue中计算属性和方法是两种常用的方式来处理数据的操作和计算。它们有不同的特点和用途,下面就具体说一下它们在使用中的区别及说明。 计算属性 计算属性是Vue中用于动态计算和返回结果的属性。计算属性会根据响应式数据的变化自动更新计算结果。计算属性有以下几个特点: 计算属性会缓存计算结果,只有在响应式数据发生变化时才会重新计算。这种缓存主要是为了避免重复计算和提…

    Vue 2023年5月27日
    00
  • vue-cli webpack 引入jquery的方法

    下面是关于“vue-cli webpack 引入jquery的方法”的攻略: 步骤一:安装 jquery 首先,我们需要在项目中安装 jquery,可以通过 npm 包管理器来进行安装。在命令行中输入以下命令即可: npm install jquery –save 其中的 –save 参数会将 jquery 添加到您的项目的 package.json 文…

    Vue 2023年5月28日
    00
  • 关于Vue组件库开发详析

    关于Vue组件库开发详析 Vue.js是一个流行的JavaScript框架,可以用于构建交互式Web界面。Vue组件库是我们可以在Vue应用程序中重复使用的一组可组合UI元素。 为什么要开发Vue组件库 提高开发效率:使用Vue组件库可以减少代码开发时间,提高开发效率,也有助于保持一致的UI风格。 易于维护:Vue组件库强制出现接口,降低维护成本,提高可重用…

    Vue 2023年5月27日
    00
  • Vue中列表渲染指令v-for的基本用法详解

    Vue 中列表渲染指令 v-for 的基本用法详解 Vue 中的 v-for 指令可以用来遍历数组和对象,将每个元素映射为一个节点,并生成相应的列表。 遍历数组 在 Vue 中,我们可以使用 v-for 指令来遍历数组。 语法: <ul> <li v-for="item in items">{{ item }}&l…

    Vue 2023年5月27日
    00
  • vue数字类型过滤器的示例代码

    下面是关于Vue数字类型过滤器的示例代码攻略。 什么是Vue数字类型过滤器? Vue数字类型过滤器是一种可以用来格式化数字的针对Vue的特殊标签。它可以使数字看起来更清晰易读,便于用户查看。 示例一:货币符号格式化 当我们需要将一个数字格式化成货币的形式时,可以通过使用Vue数字类型过滤器来实现这一目的。下面是一个带有货币符号的数字类型过滤器的示例代码: &…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部