vuex的五个属性及使用方法示例

这篇具有很好参考价值的文章主要介绍了vuex的五个属性及使用方法示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,Vuex简介

Vuex是Vue.js的状态管理库,它通过中心化的状态管理使得组件间的数据共享更加容易。
Vuex包含五个核心属性:state、getters、mutations、actions和modules。

Vuex是Vue.js的状态管理库,它提供了一种集中式存储管理应用程序中所有组件的状态,并将其分离到一个可预测的状态容器中。Vuex包括五个核心属性:

二,Vuex五个核心属性

1:state

state:定义了应用程序的状态,就是我们要管理的数据。
存放应用程序的状态(数据),所有组件共享。它是Vue实例的data属性的替代品,但是通过它存储和管理的状态,可以在整个应用程序中实现全局共享,即不同的组件可以通过定义的getter和setter访问同一状态数据。

const store = new Vuex.Store({
  state: {
    count: 0
  }
})
2:getters

getters:用于获取State中的状态,主要用于对state进行逻辑上的组合和应用,类似于Vue组件中的计算属性。

const store = new Vuex.Store({
  state: {
    count: 0
  },
  getters: {
    doubleCount(state) {
      return state.count * 2
    }
  }
})
3:mutations

mutations:用于修改state中的数据,是唯一可以修改state的地方。mutations接收state作为第一个参数,接收payload作为第二个参数。
用于修改State中的状态,只能同步执行。Mutation必须是同步函数,因为它们不能处理异步行为,异步行为应该放在Action中处理。

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    },
    add(state, payload) {
      state.count += payload
    }
  }
})
4:actions

actions:用于异步操作和提交mutations,在actions中可以进行任何异步操作,最后再提交到mutations中同步修改state。actions接收context作为第一个参数,其中包含了state、getters和commit等属性。

可以包含任意异步操作(例如从服务器获取数据),可以用Mutation通过提交(commit)来修改State。

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  },
  actions: {
    incrementAsync(context) {
      setTimeout(() => {
        context.commit('increment')
      }, 1000)
    }
  }
})
5:modules

modules:用于将store分割成模块,每个模块都拥有自己的state、mutation、action、getters和子模块,以便提高应用程序的可维护性。

将State、Getter、Mutation、Action模块化,便于组件化和模块化开发。

const store = new Vuex.Store({
  modules: {
    cart: {
      state: {
        items: []
      },
      mutations: {
        addItem(state, item) {
          state.items.push(item)
        }
      },
      actions: {
        addAsyncItem(context, item) {
          setTimeout(() => {
            context.commit('addItem', item)
          }, 1000)
        }
      }
    }
  }
})

使用方法示例:

const store = new Vuex.Store({
  modules: {
    cart: {
      state: {
        items: []
      },
      mutations: {
        pushProductToCart (state, payload) {
          state.items.push({
            id: payload.id,
            quantity: 1
          })
        }
      },
      actions: {
        addProductToCart ({ state, commit }, product) {
          const cartItem = state.items.find(item => item.id === product.id)
          if (!cartItem) {
            commit('pushProductToCart', product)
          }
        }
      },
      getters: {
        cartItems: state => {
          return state.items
        }
      }
    }
  }
})
这个代码创建了一个包含cart模块的Vuex store对象,其中cart模块包含state、mutations、actions和getters四个属性,用于管理购物车数据。在addProductToCart action中,使用state.items和commit方法来修改cart模块中的数据。在cartItems getter中,使用state.items来计算购物车中的商品数量和总价。

三,Vuex使用方法

使用方法:

1:安装Vuex:npm install vuex --save
2:在main.js中,导入Vuex,并使用Vue.use()方法注册Vuex。
import Vue from 'vue'
import Vuex from 'vuex'
import App from './App.vue'
Vue.use(Vuex)
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})
new Vue({
  store,
  render: h => h(App)
}).$mount('#app')
3:在组件中使用vuex中的数据和方法。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>
<script>
export default {
  computed: {
    count() {
      return this.$store.state.count
    }
  },
  methods: {
    increment() {
      this.$store.commit('increment')
    }
  }
}
</script>
4:vuex综合案例

下面是一个简单的Vuex使用方法的示例:

// 引入Vue和Vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 创建一个Store
const store = new Vuex.Store({
  // 定义State
  state: {
    count: 0
  },
  // 定义Mutation
  mutations: {
    increment: state => state.count++,
    decrement: state => state.count--
  },
  // 定义Getter
  getters: {
    evenOrOdd: state => state.count % 2 === 0 ? 'even' : 'odd'
  },
  // 定义Action
  actions: {
    incrementIfOdd ({ commit, state }) {
      if ((state.count + 1) % 2 === 0) {
        commit('increment')
      }
    }
  }
})
new Vue({
  el: '#app',
  store,
  template: `
    <div>
      <p>Count: {{ count }}</p>
      <p>Even or Odd? {{ evenOrOdd }}</p>
      <button @click="increment">Increment</button>
      <button @click="decrement">Decrement</button>
      <button @click="incrementIfOdd">IncrementIfOdd</button>
    </div>
  `,
  computed: {
    count () {
      return this.$store.state.count
    },
    evenOrOdd () {
      return this.$store.getters.evenOrOdd
    }
  },
  methods: {
    increment () {
      this.$store.commit('increment')
    },
    decrement () {
      this.$store.commit('decrement')
    },
    incrementIfOdd () {
      this.$store.dispatch('incrementIfOdd')
    }
  }
})

这个代码创建了一个Vuex Store,并定义了State、Mutation、Getter、Action。然后将Store实例与Vue实例关联。在Vue组件中,使用计算属性(computed)和方法(methods)来访问State、Getter和Action。在方法中,使用commit来提交Mutation,使用dispatch来分发Action。
vuex的五个属性及使用方法,uniapp+unicloud云端一体开发,Vue学习教程资料,vue.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-780483.html

到了这里,关于vuex的五个属性及使用方法示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaScript】对象 ② ( 对象使用 | 调用对象属性 | 调用对象方法 | 变量与属性区别 | 函数与方法区别 )

    使用字面量创建对象要点 : 在上一篇博客 【JavaScript】对象 ① ( 对象概念 | 对象使用场景 | 使用字面量创建对象 | 空对象字面量 | 小括号 / 中括号 / 大括号 作用 ) 中 , 介绍了 使用 字面量 创建对象 , 有如下要点 : 键值对 : 对象字面量 中的 属性 和 方法 都是以 \\\" 键值对 \\\" 的形

    2024年04月14日
    浏览(37)
  • 前端开发之jsencrypt加密解密的使用方法和使用示例

    jsencrypt官方文档 公钥私钥生成网址 jsencrypt就是一个基于rsa加解密的js库,常用在向后台发送数据的时候 本文是通过node.js的window.btoa和window.atob配合jsencrypt进行加密

    2024年02月16日
    浏览(57)
  • vue中使用this.$refs获取不到子组件的方法,属性方法都为undefined的解决方法

    因为注册了多个ref,获取是不能单单知识refs.xxx,需要使用数组和索引来获取具体一个组件refs[index].xxx 额……就像这样😐 好这么一写,导致前两个组件都无法正常使用…… 页面也会有这个报错: 组件名 - did you register the component correctly? For recursive components, make sure to provide

    2024年02月13日
    浏览(39)
  • 【Chia开发文档】Offer 类的属性、使用方法、作用及返回值

    格式如下 使用方法: Offer.xxx 作用:aaa 第 1 个 offer 文件的返回值: yyy 第 2 个 offer 文件的返回值: zzz Offer.additions() 作用:调用不受信任的输入 注:未来可能被移除出 full_node  Offer.arbitrage() 作用:返回交易中涉及的每种资产的类型和金额的字典,金额是他们在报价中提供的

    2024年01月18日
    浏览(34)
  • Unity中 标记属性、类、方法等的特性的 “[ ]“ 的使用

    当某个脚本必须依赖其他脚本或者组件共同使用时,为了避免人为添加过程的操作失误,可以在代码中使用RequireComponent,它的作用就是添加该脚本时,会自动将所依赖的各个组件添加至gameobject上,避免人为操作的失误。 具体使用方法如下: 1)新建一个GameObject对象,同时新建

    2024年02月19日
    浏览(26)
  • 【WPF应用39】WPF 控件深入解析:SaveFileDialog 的属性与使用方法

    在 Windows Presentation Foundation (WPF) 中,SaveFileDialog 控件是一个非常重要的文件对话框,它允许用户在文件系统中选择一个位置以保存文件。这个控件提供了很多属性,可以自定义文件对话框的显示内容和行为。 本文将详细介绍 SaveFileDialog 控件的属性和功能,如何在 WPF 应用程序

    2024年04月12日
    浏览(34)
  • PyQt5 鼠标和键盘事件的使用方法和示例

    了解如何在 PyQt5 中处理鼠标和键盘事件,以及如何使用这些事件来改变窗口的状态。

    2024年02月13日
    浏览(35)
  • Python网页抓取- python selenium使用方法和代码示例

    Selenium可以模拟网页操作,抓取页面内容,主要通过webdriver模块实现,为了方便理解,按照实例的操作步骤逐一介绍(函数参数不具体展开,参考下面代码实例即可理解): 获取browser实例 通过webdriver.Chorme(), webdriver.Edge(), webdriver.Firefox(), 来获取browser实例: browser = webdriver.C

    2024年01月23日
    浏览(46)
  • 第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性

    返回(通过引用)给定连接句柄的指定行数。 这里 hstmt 是连接句柄,从 AllocateStatement() 返回(通过引用)。另外,rlist 是返回的行列表;这是 InterSystems IRIS $ 列表。列表中的每个项目都包含一行。如果没有数据(SQL_CODE = 100),则假定获取成功,但返回列表为空。 注意:此

    2024年02月20日
    浏览(33)
  • 第十四章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性

    AllocateStatement() 调用 ODBC 函数 SQLAllocHandle() 并在 SQL 网关中创建相应的结构。 Connect() 建立与 DSN 的连接。 如果用户名和密码均为空,则此方法调用 ODBC 函数 SQLDriverConnect()。如果该调用不成功或指定了用户名/密码,则该方法将调用 ODBC 函数 SQLConnect()。 如果超时参数不为0,则

    2024年02月20日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包