• 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(以防请求数据量过大页面加载时拿不到返回的数据)
    分析:
    办法一的缺点是不安全,不适用大数据量的存储;
    办法二适用于少量的数据,并且不会出现网络延迟;
    办法三是要讲的重点,办法二和办法一一起使用。
  • 相关阅读:
    django的模型层
    django的模版
    SELinux入门基础
    CentOS 7.5上部署Zabbix 3.4
    使用orapki生成证书,配置Oracle数据使用SSL和TLS进行数据库连接的TCP/IP配置==TCPS
    keepalived + LVS实现高可用负载均衡集群
    Linux下LDAP用户认证,自动挂载网络共享文件系统
    编译安装Nginx,配置使用HTTPS
    RSyslog+MySQL+LogAnalyzer
    Bash Shell脚本--复制程序(命令)到指定目录下,同时将其所依赖的库文件复制到对应的目录
  • 原文地址:https://www.cnblogs.com/yad123/p/11968788.html
Copyright © 2020-2023  润新知