Vuex数据的存储与获取方式

目录
  • Vuex数据存储与获取
    • 以下示例引用自官网(开始 | Vuex)
    • 可以举一个实际应用的例子
  • 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;
    }
  },

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

(0)

相关推荐

  • vue实现将数据存入vuex中以及从vuex中取出数据

    1.在store文件下面新建文件 print.js ,写入以下代码 /** * 存放 ** 数据 * **/ // initial state const state = { all: { ID:'', BrandID:'' } } // getters const getters = {} // actions const actions = {} // mutations const mutations = { setPrint(state, all) { //设置参数 state.all

  • nuxt使用vuex存储及获取用户信息踩坑的解决

    目录 一.背景 二.具体使用方法以及遇到的问题 三.解决办法 一.背景 按公司要求做一个电商网站,考虑到seo,所以用的是nuxt进行开发. 登录之后记录用户信息(user)使用cookie+vuex模式. 二.具体使用方法以及遇到的问题 1.无法解码导致无法转化为对象且不支持中文: 使用nuxt的nuxtServerInit在在服务端的cookie里获取用户信息,但是user在存储时使用js-cookie,客户端已对数据进行编码且可能包含中文,在使用JSON.parse进行string转化为对

  • VUE:vuex 用户登录信息的数据写入与获取方式

    整体思路: 前台获取用户数据,向后台发送post请求,验证成功后 前台接受数据,改变用户登录状态 将登录状态及用户数据写入到state中 这样多个页面就可以直接使用this.$store.getters.getuname调用state中的用户信息 1. 向后台发送请求,若成功返回用户名,密码,使用 this.$store.dispatch('setLogin', true);将数据写入到state中 页面:login.vue 代码: this.loginData = await getUserI

  • Vuex数据的存储与获取方式

    目录 Vuex数据存储与获取 以下示例引用自官网(开始 | Vuex) 可以举一个实际应用的例子 Vuex存值与取值(简单易懂) Vuex数据存储与获取 因为最近需要对原有项目进行改造,之前没有认真研究过vuex的使用,今天把学习官方文档的过程记录下来以供日后查阅,同时也希望能够为其他开发人员提供参考. vuex的核心点是store,store本质上是一个仓库,它可以存储大部分的state.而这种存储是响应式的,如果state发生变化,那么对应的组件也会响应更新.如果想要改变state,那么需要

  • Android Manifest中meta-data扩展元素数据的配置与获取方式

    在AndroidManifest.xml清单文件中 我们有时会看到如下类似的<meta-data ... >元素开始的配置内容: <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyBhBFOgVQclaa8p1JJeqaZHiCo2nfiyBBo" /> <meta-data android:name="com.g

  • Spring更简单的存储方式与获取方式详解

    目录 存储方式(注解) @Controller @Service @Repository @Configuration @Component 方法注解@Bean 重命名bean 五大注解之间的关系 从Spring中获取对象 @Autowired 注入注解 三种注入的优缺点 @Resource @Autowired和@Resource的区别 总结 存储方式(注解) 使用注解的方式存储业务对象到Spring中会更简单 1.配置spring.xml设置spring存入对象的根路径 ,目的是让Sprin

  • vuex数据持久化的两种实现方案

    目录 业务需求: 方案一:vuex-persistedstate 方案二:vuex-persist 总结 业务需求: 在基于vue开发SPA项目时,为了解决页面刷新后数据丢失的问题,我们一般都是将数据存储在localstorage或sessionstorage中:当数据需要全局处理统一管理时,我们也会借助于vue官方提供的vuex来进行数据的统一管理.vuex相比localstorage或sessionstorage来说,存储数据更安全些.与此同时,vuex也存在一些弊端,当页面刷新后,vuex

  • 深入讲解iOS开发中应用数据的存储方式

    XML属性列表-plist 一.应用沙盒 每个iOS应用都有⾃己的应⽤沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应⽤必须待在⾃己的沙盒里,其他应用不能访问该沙盒(提示:在IOS8中已经开放访问) 应⽤沙盒的文件系统⽬录,如下图所示(假设应用的名称叫Layer) 模拟器应⽤用沙盒的根路径在: (apple是⽤用户名, 7.0是模拟器版本) /Users/apple/Library/Application Support/iPhone Simulator/7.0/Applications

  • Android开发笔记之Android中数据的存储方式(一)

    对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络传输到数据处理中心进行存储并进行处理,有实时性的需求等.

  • Android四种数据存储的应用方式

    Android四种数据存储的应用方式 作为一个完整的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.文件存储.SQLite. Content Provider.对这几种方式的不同和应用场景整理如下. 第一种: 使用SharedPreferences存储数据 适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解

  • Android开发之数据的存储方式详解

    在Android中,数据的存储分为两种方式: 1.直接以文件的形式存储在目录中 2.以json格式存储在数据库中 将数据以文件的存储又分为两种方式: 1.生成.txt文件 2.生成xml文件 那么今天就来详细的说一下以文件的形式存储,由于没有讲到数据库,在之后的课程中会讲到json格式存储在数据库中. 一.生成.txt文件 文件的生成无非就是我们Java中学习的输入输出流中的一部分,有Java基础相信都是很容易理解的,因为它真的很简单啦~~ 1.生成目录可以分为两种: 1)本机 2)SD卡 2.

  • Android开发笔记之Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效率.如果学过JavaWeb的朋友,首先可能想到的是数据库.当然了数据库是一个方案,那么是否还有其他的解决方案呢?今天我们在讲下Android开发笔记之Android中数据的存储方式(一)提到的除了SharedPreferences和Files(文本文件)以外的其他几种数据储存方式:xml文件.SQL

随机推荐