vuex的几个属性及其使用传参方式

yizhihongxing

好的!下面是有关Vuex的属性及其使用方法的详细攻略。

Vuex属性

  1. State - 状态属性

State是Vuex中存放数据的地方。它的作用是承载用户数据及当前应用的状态信息。在组件中通过$store.state来获取数据。

  1. Getter - 获取属性

Getter是vuex中用于从状态层中获取数据的函数。Getter可以对State中的数据进行二次处理后再返回。在组件中通过$store.getters来访问Getter。

  1. Mutation - 修改数据

Mutation是vuex中用于变更状态的函数方法。它们必须是同步函数,因为在使用Vue Devtools调试时可以跟踪Mutation的每个状态变化。在组件中通过$store.commit来触发Mutation。

  1. Action - 状态操作

Action是vuex中用于提交Mutation的异步函数。Action可以封装复杂的异步操作并提交Mutation来变更store中的状态。在组件中通过$store.dispatch来触发Action。

传参方式

  1. Getters传参

可以通过返回一个函数来实现对getter的传参访问。具体示例如下:

// store.js
const store = new Vuex.Store({
  state: {
    productList: [
      { name: 'iPhone X', price: 8099 },
      { name: '华为 Mate30 Pro', price: 5999 },
      { name: '小米 9', price: 2999 },
      { name: 'OPPO Find X2', price: 4999 }
    ]
  },
  getters: {
    getPriceByName: state => name => {
      return state.productList.find(item => item.name === name).price
    }
  }
})
// Price.vue
<script>
  export default {
    computed: {
      iPhoneXPrice () {
        return this.$store.getters.getPriceByName('iPhone X')
      }
    }
  }
</script>
  1. Actions传参

Actions 通过 context对象的 commit() 方法与 mutations 进行通信实现对状态的更新。类似于Mutation,Action也支持传递参数,但需要在 store 文件底部,通过[actionName(context, params)]的方式读取。具体示例如下:

// store.js
const store = new Vuex.Store({
  state: {
    productList: [
      { name: 'iPhone X', price: 8099 },
      { name: '华为 Mate30 Pro', price: 5999 },
      { name: '小米 9', price: 2999 },
      { name: 'OPPO Find X2', price: 4999 }
    ]
  },
  actions: {
    updateProductName (context, params) {
      context.commit('updateProductName', params)
    }
  },
  mutations: {
    updateProductName (state, params) {
      state.productList.find(item => item.name === params.oldName).name = params.newName
    }
  }
})
// Product.vue
<script>
  export default {
    methods: {
      updateName () {
        this.$store.dispatch('updateProductName', { oldName: 'iPhone X', newName: '苹果 科技公司 iPhone X' })
      }
    }
  }
</script>

以上就是有关Vuex属性的详细说明以及两条传参示例。希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vuex的几个属性及其使用传参方式 - Python技术站

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

相关文章

  • Vue2.0子同级组件之间数据交互方法

    当我们在Vue2.0中开发应用时,会遇到子组件之间需要传递数据的情况,这时候我们可以使用父子组件传参、eventBus、vuex、$attrs和$emit等方法来实现子组件之间的数据交互。 父子组件传参 父子组件之间传参是Vue2.0提供的最基本的数据交互方式,其核心思想是通过props属性将父组件的数据传递到子组件中,子组件通过props接收这些数据,从而…

    Vue 2023年5月28日
    00
  • vue设计一个倒计时秒杀的组件详解

    Vue设计一个倒计时秒杀的组件是一种常见的需求,在电商领域比较常见。以下是实现该组件的详解: 设计组件 首先,我们需要考虑该组件的设计和功能。该组件需要实现一个倒计时的效果,并且在倒计时结束时需要执行某些操作,比如提交订单、弹出提示等。因此,我们可以将该组件分为两部分:倒计时显示和倒计时结束时的操作。 倒计时显示部分可以通过计算时分秒来实现;倒计时结束时的操…

    Vue 2023年5月29日
    00
  • 一篇超详细的Vue-Router手把手教程

    一篇超详细的Vue-Router手把手教程 简介 Vue-Router是Vue.js官方提供的用于路由管理的插件,可以帮助我们快速地构建单页应用。本文将从基础的使用开始,逐步深入解析Vue-Router的特性和使用方法,让你轻松掌握Vue-Router的使用。 基本使用 安装 使用npm安装Vue-Router: npm install vue-router…

    Vue 2023年5月27日
    00
  • vue中将el-switch值true、false改为number类型的1和0

    在Vue中,将el-switch的true、false值改为number类型的1和0的方法如下: 使用计算属性将Boolean类型的值转换为Number类型的值 “`html “` 使用watch监听switch的Boolean类型值的变化,手动改变Number类型的值 “`html “` 以上两种方法都可以将el-switch的Boolean类型的…

    Vue 2023年5月27日
    00
  • 浅析Vue 和微信小程序的区别、比较

    浅析Vue和微信小程序的区别、比较 Vue和微信小程序都是前端技术,目的都是为了提供更好的用户体验。但是Vue和微信小程序的开发、使用方式和运行环境等方面有所不同,下面将对它们进行简单的比较和分析。 开发方式 Vue和微信小程序的开发方式有很大的不同。 Vue使用Vue CLI和其他构建工具来创建和管理项目,使用Vue组件化开发,采用MVVM模式,提供更加灵…

    Vue 2023年5月27日
    00
  • vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作

    使用vuex作为全局状态管理器,可以让我们更好地管理组件之间的数据共享。然而,在使用vuex时,我们也会遇到一些坑,其中最常见的就是修改vuex中的数据后,组件中的页面没有及时地渲染。以下为使用vuex时如何避免这些问题的攻略: 1. 避免直接处理vuex状态 直接修改vuex中的状态,可能会导致状态与组件的同步问题。我们应该使用mutation来修改状态。…

    Vue 2023年5月29日
    00
  • vue使用canvas手写输入识别中文

    让我来详细讲解一下 “Vue 使用 Canvas 手写输入识别中文” 的完整攻略。 1. 语言和工具 这个攻略中,我们会使用 Vue.js 作为前端框架,并使用 Canvas 进行手写输入的识别。同时,我们需要使用一个中文手写字库和一个 JavaScript 库 Hand.js。 2. 步骤 接下来,我将会详细地介绍使用 Canvas 进行中文手写输入识别的…

    Vue 2023年5月27日
    00
  • vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)

    首先简要说明一下本攻略要实现的效果:仿京东移动站导航,即通过手指滑动可以实现左右切换导航,同时在左右切换时有一定的动画效果。 一、需要实现的功能 本攻略需要完成以下功能: 实现左右滑动导航栏,并加上相应的动画效果。 实现导航栏切换时的视觉效果。 二、实现思路 在实现本攻略时,我们采用的是Vue和vue-touch。 Vue Vue是一个轻量级的JavaScr…

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