详解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日

相关文章

  • React中props使用教程

    React中props使用教程 在React中,props是组件间通信的主要方式之一。通过props,我们可以将数据从一个组件传递到另一个组件。本教程将详细讲解props的使用方法。 什么是props props(即“properties”,中文翻译为“属性”)是组件中的一种数据传递机制。通过props,我们可以向组件传递数据,就像向函数传递参数一样。pro…

    Vue 2023年5月28日
    00
  • vue单页应用在页面刷新时保留状态数据的方法

    下面是详细的讲解 “Vue单页应用在页面刷新时保留状态数据的方法”: 问题描述 在使用Vue单页应用开发时,当页面发生刷新或者用户跳转到其他页面后,原先的状态数据会丢失或清空,这会导致用户体验不佳和应用功能异常。因此,需要一种方法来在页面刷新时,保留Vue单页应用中的状态数据。 解决方案 在Vue单页应用中,可以使用以下两种方法来保留状态数据: 使用浏览器的…

    Vue 2023年5月29日
    00
  • VUE3基础学习之click事件详解

    VUE3基础学习之click事件详解 在Vue.js中,我们经常需要为DOM元素绑定事件,响应用户交互操作。而click事件是最常用的事件之一,本文将介绍在 Vue3 中如何使用 click 事件。 添加点击事件 在Vue3中,可以使用 v-on 指令来绑定 click 事件。例如,将一个按钮与 handleClick 方法绑定: <template&…

    Vue 2023年5月28日
    00
  • JavaScript+CSS实现的可折叠二级菜单实例

    下面是“JavaScript+CSS实现的可折叠二级菜单实例”的完整攻略。 1. 实现思路 该二级菜单实例的实现思路如下: 初始状态二级菜单处于收缩状态,点击主菜单可以展开或关闭对应的二级菜单。 主菜单和二级菜单分别定义为一组HTML结构,通过CSS样式实现布局和样式。 通过JavaScript事件绑定实现主菜单点击后对应的二级菜单的展开和收缩。 2. HT…

    Vue 2023年5月28日
    00
  • Vue.js的高级面试题(附答案)

    下面我将详细讲解“Vue.js的高级面试题(附答案)”的完整攻略。 一、背景 在Vue.js开发中,面试官通常会问一些高级问题来考察开发者使用Vue.js的深度和广度,因此我们需要掌握一些高级面试题。 二、面试题目及答案 1. Vue.js如何实现组件的懒加载? 答:我们可以使用Vue.js中的异步组件(Syntax Async Components)来实现…

    Vue 2023年5月28日
    00
  • vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作

    下面就给您详细讲解一下“Vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作”的完整攻略。 什么是Vue双击事件2.0事件监听 Vue双击事件是指在Vue框架中注册的鼠标单击事件,在间隔一定时间后再次点击鼠标,使其触发双击事件的一种事件处理方式。在Vue 2.0版本中,双击事件具有更高的可定制性和可扩展性。 点击事件 在Vue中,可以通过 v…

    Vue 2023年5月29日
    00
  • Vue 后台管理类项目兼容IE9+的方法示例

    当今很多浏览器都能很好地支持Vue框架,但是在一些特殊的环境中,我们还需要为IE9+这样的旧浏览器兼容Vue,本文将详细讲解如何在Vue后台管理类项目中兼容IE9+的方法。 方法一:添加Polyfill 我们可以给项目添加Polyfill,Polyfill是一种JavaScript代码,其能够为旧版浏览器提供一些现代浏览器中已经內建的功能。在Vue项目中,我…

    Vue 2023年5月28日
    00
  • 五分钟搞懂Vuex实用知识(小结)

    五分钟搞懂Vuex实用知识(小结)攻略 1.简介 Vuex是Vue.js应用程序开发的首选架构,它是一个状态管理库,将状态集中管理。Vuex主要解决了Vue.js的组件通信和数据共享的问题。 2.核心概念 Vuex的核心概念包括: State:状态,即应用程序中的数据。 Getters:获取状态,用于获取State中的值并进行处理后输出。 Mutations…

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