Vuex数据的存储与获取方式

 更新时间:2022年06月24日 15:41:32   作者:Vc编码中  
这篇文章主要介绍了Vuex数据的存储与获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Vuex数据存储与获取

因为最近需要对原有项目进行改造,之前没有认真研究过vuex的使用,今天把学习官方文档的过程记录下来以供日后查阅,同时也希望能够为其他开发人员提供参考。

vuex的核心点是store,store本质上是一个仓库,它可以存储大部分的state。而这种存储是响应式的,如果state发生变化,那么对应的组件也会响应更新。如果想要改变state,那么需要通过commit mutation。

以下示例引用自官网(开始 | Vuex)

// 创建一个新的 store 实例
const store = createStore({
  state () {
    return {
      count: 0
    }
  },
  mutations: {
    increment (state) {
      state.count++
    }
  }
})

创建完成后可在vue组件中可以以this.$store.commit('具体mutation方法')来提交状态变更

然后通过this.$store.state.x具体某一statex来得到对象的内容。

如果想要更简便的从store实例中读取状态,可以直接在computed中返回某个状态:

// 创建一个 Counter 组件
const Counter = {
  template: `<div>{{ count }}</div>`,
  computed: {
    count () {
      return store.state.count
    }
  }
}

但是为了避免多次出发dom,vue插件可以将store实例从跟组件中注入到所有的子组件中,子组件可以通过$store访问。

const Counter = {
  template: `<div>{{ count }}</div>`,
  computed: {
    count () {
      return this.$store.state.count
    }
  }
}

当我们需要的状态为多个时,可以利用mapState来生成计算属性

computed: {
  localComputed () { /* ... */ },
  // 使用对象展开运算符将此对象混入到外部对象中
  ...mapState({
    // ...
  })
}

可以举一个实际应用的例子

首先在main.js中注册

import Vuex from 'vuex' 
Vue.use(Vuex)
 
const store = new Vuex.Store({
//存放全局状态
state:{
count:0
},
 
//getters是对state的加工包装,比如将一些数据进行过滤等,为只读的方法,通过return获取值
getters:{
countNum(state){
return `the account NUm is ${state.count}`
}
}
 
//通过mutations修改state,如果直接修改state会导致一些特性丢失
mutations:{
 add(state){
state.count++
},
 minus(state){
state.count--
}  
}  
//actions涉及业务逻辑,不涉及页面的一些行为 
})

在对应的vue组件中,如下代码可在页面显示count的值,则可在vue的一个组件例如app.vue中进行如下操作

<template>
 
<div>
<h1>{{count}}</h1>
<h2>{{countNum}} </h2>
</div>
 
</template>
<script> 
import {mapState,mapGetters} from 'vuex' 
export default{
 
//
computed:{
...mapState(['count'])
...mapGetters{['countNum']}
}
}
</script>

若想使用mutation中的方法,则可在另一个vue文件例如hello.vue中进行如下操作,同时为了方便观察,在控制台中可以选择vuex实时观察vue内容

<template>
<div>
<button @click=addnum>增加</button>
</div>
</template>

  

methods:{
...mapMutations('add','minus')
addnum(){
//mutations必须通过commit才能使用,但是因为之前调用了...mapMutations,所以可以直接调用this.add();
//this.$store.commit('add')
this.add()
 
//使用mutations会确保有vuex状态改变的记录,如果直接this.$store.state.count也会生效
//this.$store.state.count++但是此种写法开发工具vuex里面无法产生记录
}
}
 
<javascript>
</javascript>

一般情况下,简单的业务逻辑要写在mutation里,复杂的业务逻辑要写在actions里 

Vuex存值与取值(简单易懂)

组件内存值

methods: {  
     fn() {     
             this.$store.commit('setValue',xxx)   //setValue存值随便起个名,   xxx要存的值 
          }           
    }

store.js的state中

const state = {
    xxx:'',//把存的那个值的名字初始化一下
}

store.js的matution中

  setValue(state,item){
    state.xxx= item;//第二个参数随意起个名
  },

组件内取值

//在计算属性中取值,js直接这样写拿到值,html用直接xxx使用
 computed: {    
    value() {
      return this.$store.state.xxx;
    }
  },

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue filter的几种用法示例小结

    vue filter的几种用法示例小结

    Vue.filter函数用于注册一个全局的过滤器,该过滤器可以在模板和组件中使用,这篇文章主要介绍了vue filter的几种用法示例小结,需要的朋友可以参考下
    2024-08-08
  • vue项目中解决 IOS + H5 滑动边界橡皮筋弹性效果(解决思路)

    vue项目中解决 IOS + H5 滑动边界橡皮筋弹性效果(解决思路)

    最近遇到一个问题,我们在企业微信中的 H5 项目中需要用到table表格(支持懒加载 上划加载数据),但是他们在锁头、锁列的情况下,依旧会出现边界橡皮筋效果,这篇文章主要介绍了vue项目中解决 IOS + H5 滑动边界橡皮筋弹性效果,需要的朋友可以参考下
    2023-02-02
  • VUE中Non-Props属性的使用

    VUE中Non-Props属性的使用

    本文主要介绍了VUE中Non-Props属性的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Vue Validate表单组件的封装详解

    Vue Validate表单组件的封装详解

    这篇文章主要为大家详细介绍了Vue Validate表单组件的封装的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解下
    2023-09-09
  • vue实现图片滑动验证功能

    vue实现图片滑动验证功能

    这篇文章主要为大家详细介绍了vue实现图片滑动验证功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • vue组件historyApiFallback作用详解

    vue组件historyApiFallback作用详解

    这篇文章主要为大家介绍了vue组件historyApiFallback作用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • vue-cli多页面应用实践之实现组件预览项目

    vue-cli多页面应用实践之实现组件预览项目

    在最近的项目中遇到了一个需求,找了相关资料后终于实现,这篇文章主要给大家介绍了关于vue-cli多页面应用实践之实现组件预览项目的相关资料,需要的朋友可以参考下
    2022-05-05
  • Vue组件之全局组件与局部组件的使用详解

    Vue组件之全局组件与局部组件的使用详解

    本篇文章主要介绍了Vue组件之全局组件与局部组件的使用详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Vue API中setup ref reactive函数使用教程

    Vue API中setup ref reactive函数使用教程

    setup是用来写组合式api,内部的数据和方法需要通过return之后,模板才能使用。在之前vue2中,data返回的数据,可以直接进行双向绑定使用,如果我们把setup中数据类型直接双向绑定,发现变量并不能实时响应。接下来就详细看看它们的使用
    2022-12-12
  • element多选表格中使用Switch开关的实现

    element多选表格中使用Switch开关的实现

    当在做后台管理系统的时候,会用到用户的状态管理这个功能,本文主要介绍了element多选表格中使用Switch开关的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07

最新评论