vuex状态管理数据状态查询与更改方式

目录
  • 状态管理数据状态查询与更改
    • 1.main.js里引入状态管理
    • 2.store的创建
  • vuex数据管理,组件数据一一对应
    • 1.组件A:我们拿到图片数据源
    • 2. vuex(首先要记得下载和安装vuex,此处省略)
    • 3.组件B
    • 大致效果

状态管理数据状态查询与更改

1.main.js里引入状态管理

import store from './store' 
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})

2.store的创建

import Vue from 'vue'
import Vuex from 'vuex'
import errorLog from './modules/user'
const getters={
name: state => state.user.name,
}

Vue.use(Vuex)

const store = new Vuex.Store({
  modules: {
    user
  },
  getters
})
export default store

user.js里的内容,只定义了一个修改store里name的方法。

由于vuex中store的改变唯一的途径是提交mutation,通过调用实例化后的vuex,mutations中相对应的方法可以实现对状态值的改变,其中name可以为参数对象,或者单个值,state参数在调用时默认为第一个参数可以不传,但是在mutations中申明该函数时必须传入state

  mutations: {
    SET_NAME: (state, name) => {
      state.name = name
    }
  }
export default user

在子组件中通过this.$store.state.变量名在子组件中访问state中某个变量的值

this.user.name = this.$store.state.name //这里的name为存储在vuex中state的变量名

在子组件中通过this.$store.commit(‘方法名’,参数)来进行对vuex中的数据状态进行更新/插入

//在子组件中更新store中的状态
 this.$store.commit("name",userName)//其中userName为传入的参数

vuex数据管理,组件数据一一对应

需求:我们点击拍照后将拍好的照片放入vuex的state里面管理,给其他的组件调用(此处以组件A,和组件B命名)

1.组件A:我们拿到图片数据源

并且在点击拍照的同时创建一个当前时间,将图片源和时间以对象的形式提交vuex。

var url = canvas.toDataURL();
var date=new Date().toLocaleTimeString()
this.$store.commit("canvass", {url,date});

2. vuex(首先要记得下载和安装vuex,此处省略)

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
 var state={   //要设置的全局访问的state对象
     canvass:[]//图片和时间保存在这
   };
    var getters = {   //实时监听state值的变化(最新状态)
    getCanvass(state) {  //承载变化的getCanvass的值 ,给组件B调用
       return state.canvass
    }
};
var mutations = {
    canvass(state,datalist){  //组件A提交过来的数据,给到canvass中保存
        state.canvass.unshift(datalist)
    }
};
 var actions = {

};
  var store = new Vuex.Store({
       state,
       getters,
       mutations,
       actions
});
export default store;

3.组件B

html

<!-- 时间 -->
<ul class="row1">
  <li
    v-for="i in imglist"
    :key="i.url"
    @click="doImg(i.url)" //将循环到的图片数据存入组件的数组中,方便时间和图片一一对应
    class="infinite-list-item"
  >
    <el-button size="small">{{ i.date }}</el-button>
  </li>
</ul>
<!-- 当imglist数组中有数据的时候渲染imglist中的数据,当用户点击按钮的时候显示url数组中的数据 -->
<!-- 图片 v-if判断当imglist.length>0也就是最少有一条数据的时候才渲染该dom -->
<img :src="flag?imglist[0].url: url" class="image" v-if="imglist.length>0" />

vue

data() {
    return {
      imglist: [], //默认的图片时间数据
      url: [], //点击按钮后对应的图片时间数据
      flag:true
    };
  },
  created() {
    this.imglist = this.$store.getters.getCanvass; //拿到vuex中getters中的canvass数据
  }
 methods: {
    doImg(url) {
      this.url = url.split("???"); //点击按钮后将图片时间数据保存到当前最近的url数组中
      this.flag=false
    }
 }

大致效果

这样当我们没有进行拍照进入该页面的时候是空白显示,当然我们进行拍照了之后进入该页面,默认显示最新拍的哪一张,在组件A拍照了几张照片组件B就会显示几个时间点,点击不同的时间点右侧出现不同的时间点拍的照片

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

(0)

相关推荐

  • vuex管理状态仓库使用详解

    一.什么是Vuex?  Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试.状态快照导入导出等高级调试功能.采用了全局单例模式,将组件的共享状态抽离出来管理,使得组件树中每一个位置都可以获取共享的状态或者触发行为.  那么什么是状态呢?我把状态理解为在没有使用vu

  • Vue3状态管理的使用详解

    背景 随着Vue3的逐步应用,对状态管理的需求越来越多.起初是基于Vuex4进行状态管理的,但是Vuex4也暴露了一些问题.从个人角度来说,Vuex4类似于过渡期产品,对TypeScript的支持性并不完整.如果使用TypeScript编写组件,需要遵循一定步骤后,才可以正确进行类型推断,并且对modules的使用上也并不友好.Vuex核心贡献者Kia King也表示Vuex5已经在计划中,并且能提供完整的TypeScript支持,那么在Vuex5面世之前,或者直接"舍弃"Vuex的话

  • 说说如何使用Vuex进行状态管理(小结)

    1 为什么需要状态管理 一个 Vue 组件分为数据(model)与视图(view).当通过 methods 中的方法更新数据时,视图也会自动更新. message.vue <template> <div> {{message}} <button @click="changeMessage">改变内容</button> </div> </template> <script> export default

  • Vue的状态管理vuex使用方法详解

    引入vuex 当访问数据对象时,一个 Vue 实例只是简单的代理访问.所以,如果有一处需要被多个实例间共享的状态,可以简单地通过维护一份数据来实现共享 const sourceOfTruth = {} const vmA = new Vue({ data: sourceOfTruth }) const vmB = new Vue({ data: sourceOfTruth }) 现在当 sourceOfTruth 发生变化,vmA 和 vmB 都将自动的更新引用它们的视图.子组件们的每个实例也会

  • vuex状态管理数据状态查询与更改方式

    目录 状态管理数据状态查询与更改 1.main.js里引入状态管理 2.store的创建 vuex数据管理,组件数据一一对应 1.组件A:我们拿到图片数据源 2. vuex(首先要记得下载和安装vuex,此处省略) 3.组件B 大致效果 状态管理数据状态查询与更改 1.main.js里引入状态管理 import store from './store'  new Vue({   el: '#app',   router,   store,   components: { App },   tem

  • Vuex中实现数据状态查询与更改

    在vuex进行vue注入后即可在任一子组件中通过this.$store来访问vuex import store from './store' new Vue({ el: '#app', router, store, components: { App }, template: '<App/>' }) 1.在子组件中通过this.$store.state.变量名在子组件中访问state中某个变量的值 this.tabbarActive = this.$store.state.tabbarActi

  • vue.js的状态管理vuex中store的使用详解

    一.状态管理(vuex)简介 vuex是专为vue.js应用程序开发的状态管理模式.它采用集中存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.vuex也集成刀vue的官方调试工具devtools extension,提供了诸如零配置的time-travel调试.状态快照导入导出等高级调试功能. 二.状态管理核心 状态管理有5个核心,分别是state.getter.mutation.action以及module.分别简单的介绍一下它们: 1.state state为

  • vue store之状态管理模式的详细介绍

    状态管理 一.状态管理(vuex)简介 uex是专为vue.js应用程序开发的状态管理模式.它采用集中存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.vuex也集成刀vue的官方调试工具devtools extension,提供了诸如零配置的time-travel调试.状态快照导入导出等高级调试功能. Vuex 的思想 当我们在页面上点击一个按钮,它会处发(dispatch)一个action, action 随后会执行(commit)一个mutation, mut

  • 前端的状态管理(上)

    目录 1.什么是前端状态管理? 2.Vuex 3.Bus 总线 4.web storage 前言: 提到状态管理大家可能马上就想到:Vuex.Redux.Flux.Mobx等等方案.其实不然,不论哪种方案只要内容一多起来似乎都是令人头疼的问题,也许你有适合自己的解决方案又或者简单的注释和区分模块,今天来聊一聊前端的状态管理,如果你有好的建议或问题欢迎在下方留言提出. 1.什么是前端状态管理? 举个例子:图书馆里所有人都可以随意进书库借书还书,如果人数不多,这种方式可以提高效率减少流程,一旦人数多

  • javascript Redux的状态管理详解

    所谓的状态管理,就是对应用程序中的数据进行管理. 理念:凡是数据流管理混乱的项目,几乎都上不了线.好的项目,必须有非常良好的数据流管理. 如何使用Redux?记住“3个3”. 第1个三:3个api,createStore.combineReducers.applyMiddleware 第2个三:3个特点,store单一数据源.store只读的.只能通过reducer纯函数来修改store. 第3个三:3个概念,store.action.reducer. 基本概念: state 包含所有数据,用来

  • Mobx实现React 应用的状态管理详解

    目录 MobX 从一个 demo 开始 创建类并将其转化成可观察对象 使用可观察对象 MobX 与 React 集成 在组件中使用可观察对象 1. 访问全局的类实例 2. 通过 props 3. 通过 React Context 4. 在组件中实例化 observable class 并存储它的实例 5. 在组件中调用 observable 方法创建可观察对象 6. 在函数组件中使用 useLocalObservable 让组件具备观察能力 总结 MobX MobX 是一个状态管理库,它会自动收

  • React 状态管理工具优劣势示例分析

    目录 什么是状态管理? React 状态管理方案 方案介绍 方案对比 Source 相关建议 什么是状态管理? “状态”是描述应用程序当前行为的任何数据.这可能包括诸如“从服务器获取的对象列表”.“当前选择的项目”.“当前登录用户的名称”和“此模式是否打开?”等值. 众所周知,我们在研发一个复杂应用的过程中,一套好的状态管理方案是必不可少的,既能提升研发效率,又能降低研发维护成本,那么状态管理方案那么多,它们有什么不同,我们又该如何选择适合当前应用的方案呢? 本期将主要就 react 的常用状态

  • Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解

    更改 Vuex 的 store 中的状态的唯一方法是提交 mutation. Vuex 中的 mutation 非常类似于事件: 每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler).这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数.mutation 必须是同步函数. 不带载荷(只改变数据的状态) 接前面几篇文章的例子,这里我们修改商品价格减半. store.js mutations: { //商品价格减半:

随机推荐