vuex中的5个属性使用方法举例讲解

yizhihongxing

下面是 "vuex中的5个属性使用方法举例讲解" 的详细攻略:

1. State

StateVuex 存储数据的地方,类似于组件中的 data。通过处于 Store 对象中的 state 选项来定义,我们可以在模块内或组件中直接通过 this.$store.state 进行访问。

下面是一个 State 的示例,用来存储当前文章列表:

// store.js
export default new Vuex.Store({
  state: {
    articleList: []
  },
  // other options...
})

当我们需要访问 articleList 时,可以在组件中使用:this.$store.state.articleList 进行读取。

// ArticleList.vue
export default {
  created() {
    console.log(this.$store.state.articleList)
  }
}

2. Getter

当组件需要根据 State 计算得到一些信息时,我们可以使用 Getter。类似于 State,通过 Store 对象中的 getters 选项来定义。在组件中,我们可以通过 this.$store.getters 来访问它们。

下面是一个 Getter 的示例,用来计算当前文章总数:

// store.js
export default new Vuex.Store({
  state: {
    articleList: []
  },
  getters: {
    articleCount(state) {
      return state.articleList.length
    }
  },
  // other options...
})

在组件中,我们可以使用 this.$store.getters.articleCount 来访问计算得到的文章总数:

// ArticleList.vue
export default {
  computed: {
    articleCount() {
      return this.$store.getters.articleCount
    }
  }
}

3. Mutation

当我们需要修改 State 中的数据时,使用 Mutation。它提供了一种方法来保证状态的一致性,因为它们永远是同步的。类似于 State,通过 Store 对象中的 mutations 选项来定义。我们可以在组件中通过 this.$store.commit 来调用 Mutation

下面是一个 Mutation 的示例,用来添加一篇新文章到文章列表中:

// store.js
export default new Vuex.Store({
  state: {
    articleList: []
  },
  mutations: {
    addArticle(state, article) {
      state.articleList.push(article)
    }
  },
  // other options...
})

在组件中,我们可以使用 this.$store.commit 提交 Mutation

// AddArticle.vue
export default {
  methods: {
    addArticle(article) {
      this.$store.commit('addArticle', article)
    }
  }
}

4. Action

Mutation 类似,Action 也可以用来修改 State 中的数据。但是,Action 可以是异步的。因此,我们可以在 Action 中执行一些异步操作,例如从服务器中获取数据。类似于 StateMutation,通过 Store 对象中的 actions 选项来定义。我们可以在组件中通过 this.$store.dispatch 来调用 Action

下面是一个 Action 的示例,用来从服务器中获取一篇新文章然后添加到文章列表中:

// store.js
export default new Vuex.Store({
  state: {
    articleList: []
  },
  mutations: {
    addArticle(state, article) {
      state.articleList.push(article)
    }
  },
  actions: {
    addNewArticle({ commit }, payload) {
      return api.get('/article/' + payload.id)
        .then(response => {
          commit('addArticle', response.data)
        })
    }
  },
  // other options...
})

在组件中,我们可以使用 this.$store.dispatch 来触发 Action 的执行:

// AddArticle.vue
export default {
  methods: {
    addNewArticle(id) {
      this.$store.dispatch('addNewArticle', { id: id })
    }
  }
}

5. Module

当我们的应用越来越复杂时,StateMutationGetterAction 的数量会越来越多,导致 Store 对象变得难以维护。在这种情况下,我们可以使用 ModuleStore 拆分成多个模块。每个模块具有自己的 StateMutationGetterAction 属性。我们可以在组件中使用 this.$store[name] 来访问模块。

下面是一个 Module 的示例,用来管理文章和用户:

// store.js
export default new Vuex.Store({
  modules: {
    article: {
      state: { /* ... */ },
      mutations: { /* ... */ },
      getters: { /* ... */ },
      actions: { /* ... */ }
    },
    user: {
      state: { /* ... */ },
      mutations: { /* ... */ },
      getters: { /* ... */ },
      actions: { /* ... */ }
    }
  },
  // other options...
})

在组件中,我们可以使用以下方法来访问模块:

// ArticleList.vue
export default {
  computed: {
    articleCount() {
      return this.$store.article.getters.articleCount
    }
  }
}
// AddArticle.vue
export default {
  methods: {
    addNewArticle(id) {
      this.$store.article.dispatch('addNewArticle', { id: id })
    }
  }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vuex中的5个属性使用方法举例讲解 - Python技术站

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

相关文章

  • Vue简明介绍配置对象的配置选项

    关于Vue的配置对象的配置选项,我们可以分为以下几个部分进行讲解: 1. el 指定 Vue 实例绑定的元素。可以是一个 CSS 选择器字符串,也可以是一个 HTMLElement 实例。 示例1: <div id="app"> {{ message }} </div> var app = new Vue({ el…

    Vue 2023年5月28日
    00
  • vue3+ts数组去重方及reactive/ref响应式显示流程分析

    题目分为两部分,下面我将分别讲解。 vue3+ts数组去重方案 数组去重在前端开发中是一个常见的需求,Vue3 和 TypeScript 结合使用时,一个简单且通用的去重方案是通过 Set 对象实现。 具体步骤如下: 首先,定义一个数组。 const arr: Array<number> = [1, 2, 2, 3, 4, 4, 5, 5, 6]…

    Vue 2023年5月28日
    00
  • 使用vue-cli创建vue项目介绍

    当我们要开始一个新的Vue项目时,我们可以使用Vue CLI来创建项目。Vue CLI是一个标准化的工具,用于快速搭建Vue项目。它会为我们提供一个Vue项目的基础结构,包含了很多开箱即用的插件和功能。 下面详细介绍如何使用Vue CLI来创建Vue项目的完整攻略。 环境准备 首先,我们要检查本地环境是否已经安装了Node.js。打开终端,输入以下代码检查是…

    Vue 2023年5月28日
    00
  • Vue路由重复点击报错问题及解决

    Vue路由重复点击报错问题及解决 问题描述 在使用Vue开发中,遇到路由跳转时,有可能出现以下问题: 多次快速点击同一路由会报错。 从当前路由返回到上一路由,再点击返回到当前路由时会报错。 错误通常如下: NavigationDuplicated{_name: "NavigationDuplicated"} 问题原因 出现该错误,是因为V…

    Vue 2023年5月28日
    00
  • vue完成项目后,打包成静态文件的方法

    Vue.js是一种流行的JavaScript框架,它适用于构建交互式Web应用程序。Vue.js提供了许多有用的特性,使得开发人员可以轻松地构建模块化的应用程序。当你完成了Vue.js的应用程序,你可以将其打包成静态文件。 以下是将Vue.js应用程序打包成静态文件的完整攻略: 步骤1:安装Vue CLI Vue CLI是一个专门用于Vue.js应用程序的命…

    Vue 2023年5月28日
    00
  • vue中ref引用操作DOM元素的实现

    在Vue.js中,可以通过ref指令来获取DOM元素的引用,这使得我们可以在Vue组件中直接操作DOM元素。下面是实现这一功能的步骤。 步骤一:在DOM元素上添加ref指令 要获取一个DOM元素的引用,我们需要给它添加ref指令并指定一个名称。ref指令可以添加在任何元素上,如下所示: <template> <div> <but…

    Vue 2023年5月29日
    00
  • Vue首屏性能优化组件知识点总结

    当我们开发网站时,保证首屏性能优化是一个非常重要的问题。在Vue的开发中,也存在一些优化策略和技术,来帮助我们优化网站的首屏性能,其中组件是一个比较重要的方面。以下是Vue首屏性能优化组件知识点总结的完整攻略。 1. 异步组件 Vue允许我们将组件代码进行异步加载,这可以帮助我们解决首屏加载慢的问题。可以采用以下办法: 1.1 使用vue-cli创建项目时,…

    Vue 2023年5月28日
    00
  • springboot vue测试平台接口定义前后端新增功能实现

    下面我将详细讲解“springboot vue测试平台接口定义前后端新增功能实现”的完整攻略,这包括如何进行前后端的接口定义以及新增功能的开发实现。具体攻略如下: 1. 环境准备 在开始之前,需要确保本机已经安装了以下环境: JDK 8或以上版本 Node.js 8或以上版本 Vue CLI IntelliJ IDEA 或其他java开发工具 VS Code…

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