不管是在移动端还是 pc
端,都有一些需要缓存数据的场景。
比如,在一个数据展示页,这是一个 el-table
,当用户点击某一行会进入这个条目的详情。当用户返回展示页的时候,我们希望能帮助用户留住之前的诸如:筛选条件、跳转页数 等数据。
vue
的 keep-alive
可以帮我们做这个事情。
现在,这个 el-table
中有些数据很长。
比如一段携带参数的 url :https://www.baidu.com/link?url=tsptvz-cU2m2HFPFwje315C6Y8BLh0nPi5xD8t-RL5S&wd=&eqid=d4c41bfd00026e520000000360af7907
那我们想要这个 url
在 el-table
里完全展示出来是不现实的。
所以 ElementUI 提供了 show-overflow-tooltip
这样一个属性,当表格中内容过长被隐藏时显示 tooltip
。
然而
同时使用 keep-alive
和 show-overflow-tooltip
就会出现下面的问题:
show-overflow-tooltip
实际会生成一个 tooltip
提示框,加载到 body
下。
当组件被销毁时,其 display
属性被赋值为 none
,从而实现隐藏效果。
当我们代码中使用 keep-alive
将组件保存起来,即便路由已经跳转,但组件不会销毁,tooltip
提示框则不会自动隐藏,未获取到位置,就定位到左上角
直接使用 js
将这个恼人的 tooltip
隐藏掉。
包裹在 keep-alive
组件中的的组件在被切换时会调用 activated
、deactivated
两个生命周期的钩子方法。
其中 activated
是缓存组件激活时调用的,而 deactivated
是路由跳转到其他组件时调用的
所以,代码可以这样写
deactivated() {
const nodeList = document.querySelectorAll(".el-tooltip__popper");
for (var i = 0; i < nodeList.length; i++) {
nodeList[i].style.display = "none";
}
}
这段代码的意思是,在路由即将离开的时候,查找所有的 el-tooltip__popper
并将其 display
属性设置为 none
。
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!