-
-
Notifications
You must be signed in to change notification settings - Fork 5k
<keep-alive>组件缓存问题 #811
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
暂时没有直接支持。不过现在你可以在meta里定义是否keepAlive来workaround。 <keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view> |
这样做的话,相当于说,要么组件都不缓存,要么都被缓存,是这样吗? |
不是。这样做是只有你设置了 |
多些指点。请收下我的膝盖! |
For example in your routes config
and then in your file that exists
The first component will be cached but the second not. Hope it helps. |
thank you very much @rousos87 |
@fnlctrl 实测在进入 |
@JounQin 请给重现 |
@fnlctrl 抱歉,判断条件加错地方了,都是 <keep-alive v-if="$route.meta.keepAlive">
<router-view/>
</keep-alive>
<router-view v-else/> |
@JounQin |
请问在vue router 1.X能否支持如上keep alive的功能? @fnlctrl |
组件形式的keep-alive是vue 2.0的功能,不是vue-router的,所以1.x不会支持。
…On Wed, Nov 30, 2016, 23:10 Moment Wang ***@***.***> wrote:
请问在vue router 1.X能否支持如上keep alive的功能? @fnlctrl
<https://github.com/fnlctrl>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#811 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFTLl6rPrNYvQ3-3HbYOyrD1firAofgyks5rDZHWgaJpZM4Kcykd>
.
|
@fnlctrl 我有一个问题
上面的代码会报错: 虽然我知道是什么原因报错,但我想问的是,怎么去动态使用 我尝试了不同的组合:
上面的代码会导致
上面的代码同样会导致
上面的代码, |
@wenkanglin <div id="app">
<transition :name="transition">
<keep-alive>
<router-view v-if="keepAlive"></router-view>
</keep-alive>
</transition>
<transition :name="transition">
<router-view v-if="!keepAlive"></router-view>
</transition>
</div> |
@JounQin 我试了一下,其他的没问题,但 |
@fnlctrl 实测在进入 keepAlive: true 的组件后再进入 keepAlive: false 的组件时, keepAlive: true 的组件会重新渲染,组件生命周期会再执行一遍 |
在用 router 的时候,建议 keep-alive 的 include 属性来实现组件的缓存。 |
对于这种写法,如果有多层路由嵌套,会有些问题吧, <keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view> 可以用 <keep-alive :include="/Keep$/">
<router-view></router-view>
</keep-alive> |
你好,确实发现多层路由嵌套会有问题,设置keep-alive为true的组件有的能缓存成功有的不能,但是使用include却一个也没缓存成功,include的使用有什么注意事项没有,在什么情况下才能正常使用? @tian-tian |
参考vue的文档,里面说的很清楚。 @doublemin |
@wenkanglin 请问keey-alive和out-in的问题解决了吗? |
mark |
最近在用vue+vue-router做一个app, 某一模块我用keep-alive实现全部缓存,页面返回的时候再将当前页面销毁,主要代码如下: 然后在man.js中注册了全局方法 Vue.mixin({ 这样功能可以实现正向打开页面全部被缓存,当前页面在返回的时候被销毁 但我发现,这个操作只有第一次有效,每二次从头进去的时候发现,页面根本不会缓存 第一次,打开四个页面,全部缓存然后回到第一个页面 再打开刚才的四个页面,缓存出了问题 |
@JounQin 针对上面的 虽然 是可以的 ,但是只要进入一个页面 控制塔就会有一个错误报警信息 改良下 就完美了 `
|
应该尽可能使用include/exclude
|
@realfly08 你的问题解决了吗,出现同样的多级路由缓存问题 |
发现这个怪异的问题,通过注册beforeEach强制刷新页面暂时解决 |
|
我以这种方式根据不同的path,去刷新页面, 但是出现一个问题, 就是当我更改缓存页面中的dom结构时, 这个时候页面进行vue热更新, 导致整体页面丢失了, 将 :key="$route.path"去掉就没事了, 为什么会出现这种情况呢 |
请问现在可以支持动态移除缓存吗? |
这个真的是容易犯的错误。 |
采用这种做法,但是有时可以,有时不行,请问哪里可能导致这个问题?检查N次都找不到原因。 其他地方提问:
|
经过多次测试,发现居然是Route的层级问题,我的路由定义是:
id=3的这个无法缓存,id=2可以缓存(即树的第二级可以缓存,第三级及以后不能缓存)。 |
使用 keep-alive :include匹配name,列表页(比如之前浏览了3页数据),返回没有被缓存3页 |
keeep-alive 缓存的是路由组件,不是功能型(table)组件。这个你需要单独处理的 |
|
我现在有这样一个需求: 简单的来说: |
info -> confirm 之前可以暂存表单数据。提交成功后再 resetForm 。这个跟 keep-alive 没关系吧? |
只是假设有这个需求 要用到keep-alive 目前找到的解决方案就是通过添加路由元信息 通过路由元信息判断组件是否缓存 再搭配beforeRouteLeave |
列表页 路由钩子
路由
|
请问你解决了吗,我也是这个问题 |
解决了吗? |
我也遇到同样的问题 请问这个解决了么 |
用transition标签包裹起来, 就可以了
…------------------ 原始邮件 ------------------
发件人: "vuejs/vue-router" <notifications@github.com>;
发送时间: 2020年9月3日(星期四) 下午2:43
收件人: "vuejs/vue-router"<vue-router@noreply.github.com>;
抄送: "사랑해요"<494013115@qq.com>;"Comment"<comment@noreply.github.com>;
主题: Re: [vuejs/vue-router] <keep-alive>组件缓存问题 (#811)
<keep-alive> <router-view :key="$route.path"></router-view> </keep-alive>
我以这种方式根据不同的path,去刷新页面, 但是出现一个问题, 就是当我更改缓存页面中的dom结构时, 这个时候页面进行vue热更新, 导致整体页面丢失了, 将 :key="$route.path"去掉就没事了, 为什么会出现这种情况呢
我也遇到同样的问题 请问这个解决了么
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
也还是不行 |
同样遇到+1 |
我也是遇到了这个问题,一直没法解决,导致到现在都没用keepAlive.... |
大家解决了吗? |
这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。
|
1 similar comment
这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。
|
如下代码:
通过路由匹配到的组件都将被 cache 了, 如果其中的组件我不想缓存该怎么做呢?
The text was updated successfully, but these errors were encountered: