博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keep-alive + vuex + mint + Infinite scroll 保存分页列表数据
阅读量:5980 次
发布时间:2019-06-20

本文共 1689 字,大约阅读时间需要 5 分钟。

场景描述

在使用mintUI loadmore的时候,假如上拉加载到第三页,查看详情然后后退到列表页,列表组件重置。但是,有的情况是需要组件重置的,比如你在另一个组件添加了一条记录,那么再进入这个组件的时候就需要重置组件数据。

使用 keep-alive

<keep-alive>包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。

第一步

router里添加meta 设置哪个组件内数据需要被缓存

{    path: '/exam/record',name: 'examRecord',component: examRecord,    meta:{    	title:'考试记录',    	keepAlive:true //是否需要缓存    }},{    path: '/exam/type',name: 'examType',component: examType,    meta:{	title:'选择考试类目'    }},复制代码
第二步

app.vue里加入

复制代码
第三步

引入vuex 添加一个变量,引入步骤,可查看文档

import {mapState , mapMutations} from 'vuex';state:{	refreshSearch:true, //是否重置列表(考试记录)},mutations:{    //修改refreshSearch的值	setRefreshSearch(state,flag){	    state.refreshSearch = flag;	}}复制代码
第四步

/exam/record组件里操作,当组件在 <keep-alive> 内被切换,它的 activateddeactivated 这两个生命周期钩子函数将会被对应执行。所以我们组件初始化在activated周期里操作

activated(){    this.loading = false;//允许上拉刷新    //如果refreshSearch的值为true,则重置列表数据    if(this.refreshSearch){        this.page = 1;        this.getList();    }},methods:{    ...mapMutations(['setRefreshSearch'])},computed:{    ...mapState(['refreshSearch'])}goDetails(id){	this.setRefreshSearch(false); //进入详情时 改变refreshSearch的值 使列表组件数据缓存	this.$router.push({path:'/exam/handIn',query:{id:id}});},复制代码

我使用mintUI的时候出现了个问题,就是在进入详情页的时候列表页一直在接口,不知道是不是<keep-alive>把列表页只是做了隐藏状态,这个我没弄懂。 所以我在离开页面的时候加了操作,离开页面的时候把loading改为true

beforeRouteLeave(to, from, next) {    this.loading = true;    next();},复制代码
第五步

重置refreshSearch值,我是写在首页了,如果回到首页,refreshSearch值为true,则下次进入到列表组件的时候,数据重置。

import {mapState , mapMutations} from 'vuex';methods:{    ...mapMutations(['setRefreshSearch'])},mounted(){	this.setRefreshSearch(true);},复制代码

转载地址:http://frlox.baihongyu.com/

你可能感兴趣的文章
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>