zoukankan      html  css  js  c++  java
  • vue状态管理器

    1. 什么是vuex? 

    vuex 是一个专门为vue.js应用程序开发的状态管理模式。

    2. 为什么使用vuex?

    当我们遇到多个组件共享状态时,多层组件的传值非常繁琐,不利于维护,因此我们把组件的共享状态抽取出来,统一管理,在这种模式下,不管在哪个组件都可以获取状态或触发行为。

    3. vuex五种基本对象

    • state:存储状态(变量)
    • getters:对数据获取之前的再次编译,可以理解为state的计算属性。我们在组件中使用 $sotre.getters.fun()
    • mutations:修改状态,并且是同步的。在组件中使用$store.commit('',params)。这个和我们组件中的自定义事件类似。提交mutions是更改Vuex中的状态的唯一方法。mutations必须是同步的,如果要异步需要使用actions。
    • actions:异步操作。在组件中使用是$store.dispath(''),是专门操作异步请求的数据和业务逻辑的地方,它不能直接变更state中的状态,而是通过commit来调用mutations里的方法来改变state里的数据。
    • modules:store的子模块,为了开发大型项目,方便状态管理而使用的。这里我们就不解释了,用起来和上面的一样。

    4. vuex的应用

    //新建store.js文件 
    
    //初始化数据
    state: {bannerlist:[]}
    //请求数据
    action:{
        getbannerlist(context){
            axios.get('/banner').then(res=>{
                context.commit({
                    type:changebannerlist
                    data:res.data
            })
        })
    }
    // 改变状态
    mutations: {
        changeBannerlist (state, data) {
          state.bannerlist = data.data
        }
    }
    
    //在组件中使用
    computed: {
        ...mapState({
         bannerlist: (state) => state.home.bannerlist
       })
     }
    
    created () {
       this.$store.dispatch('getBannerlist')
     }

    5.组件中使用 vuex 的值和修改值的地方?

    //直接获取 修改
    //state
    this.$ store.state.count
    //getter
    this.$ store.getters.count
    //调用 action 修改 state 值,不带参数
    this.$ store.dispatch('increment');
    //调用 action 修改 state 值,带参数
    this.$ store.dispatch('increment',{value :123});

    6.pc端页面刷新时实现vuex缓存

    办法一:将vuex中的数据直接保存到浏览器缓存中(sessionStorage、localStorage、cookie)
    办法二:在页面刷新的时候再次请求远程数据,使之动态更新vuex数据
    办法三:在父页面向后台请求远程数据,并且在页面刷新前将vuex的数据先保存至sessionStorage(以防请求数据量过大页面加载时拿不到返回的数据)
    分析:
    办法一的缺点是不安全,不适用大数据量的存储;
    办法二适用于少量的数据,并且不会出现网络延迟;
    办法三是要讲的重点,办法二和办法一一起使用。
  • 相关阅读:
    表单分页,默认第一页,点击第5页,返回,如何跳转到第1页
    2019面试题
    企业微信中,获取外部联系人信息
    js vue 在页面中将摄像头放在一个标签里展示,(模仿手机拍照功能)
    微信小程序 自定义三列城市弹窗
    微信小程序 密码键盘
    vue 上传图片视频组件,可拍照选择照片,解决苹果手机拍照旋转问题
    vue 上拉加载自定义组件,超好用哦
    vue 模仿机票自定义日历组件,区间选择
    vue 日历组件只显示本月和下个月 -- 多选日期
  • 原文地址:https://www.cnblogs.com/yad123/p/11968788.html
Copyright © 2011-2022 走看看