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

 更新时间:2022年04月12日 15:29:59   作者:青衣浏阳  
这篇文章主要介绍了vuex状态管理数据状态查询与更改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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就会显示几个时间点,点击不同的时间点右侧出现不同的时间点拍的照片

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

相关文章

  • vue element-ui Radio单选框默认值选不中的原因:混用字符和数字问题

    vue element-ui Radio单选框默认值选不中的原因:混用字符和数字问题

    这篇文章主要介绍了vue element-ui Radio单选框默认值选不中的原因:混用字符和数字问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Vue中使用highlight.js实现代码高亮显示以及点击复制

    Vue中使用highlight.js实现代码高亮显示以及点击复制

    本文主要介绍了Vue中使用highlight.js实现代码高亮显示以及点击复制,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • vue中自定义指令directive的详细指南

    vue中自定义指令directive的详细指南

    这篇文章主要给大家介绍了关于vue中自定义指令directive的相关资料,自定义指令解决的问题或者说使用场景是对普通 DOM 元素进行底层操作,所以我们不能盲目的胡乱的使用自定义指令,需要的朋友可以参考下
    2021-09-09
  • 一次vue项目优化的实际操作记录

    一次vue项目优化的实际操作记录

    用vue开发项目上线以后,发现首页加载速度非常慢,如果项目比较大,甚至可能出现10s以上的等待,下面这篇文章主要给大家介绍了关于vue项目优化的相关资料,需要的朋友可以参考下
    2022-09-09
  • vue关于点击详情页面keep-alive的缓存问题

    vue关于点击详情页面keep-alive的缓存问题

    这篇文章主要介绍了vue关于点击详情页面keep-alive的缓存问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 使用Element的InfiniteScroll 无限滚动组件报错的解决

    使用Element的InfiniteScroll 无限滚动组件报错的解决

    这篇文章主要介绍了使用Element的InfiniteScroll 无限滚动组件报错的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue前端开发keepAlive使用详解

    vue前端开发keepAlive使用详解

    在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态
    2021-10-10
  • el-select如何获取当前选中的对象所有(item)数据

    el-select如何获取当前选中的对象所有(item)数据

    在开发业务场景中我们通常遇到一些奇怪的需求,下面这篇文章主要给大家介绍了关于el-select如何获取当前选中的对象所有(item)数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 深入详解Vue中的路由懒加载

    深入详解Vue中的路由懒加载

    路由懒加载是一种优化技术,用于延迟加载应用程序中的路由组件,它可以提高初始加载速度并减少资源消耗,特别适用于大型单页应用,下面我们就来看看它的原理与使用吧
    2023-08-08
  • vue table直接定位到指定元素的操作代码

    vue table直接定位到指定元素的操作代码

    最近遇到这样的需求点击某一个节点,弹窗,直接定位到点击的节点,高亮并显示数据,下面小编给大家带来了vue table直接定位到指定元素的操作代码,需要的朋友可以参考下
    2022-11-11

最新评论