erye
erye
> [email protected] , [email protected], [email protected] , @vitejs/[email protected] 当 router-view 被 keep-alive 包裹的时候,无论 key 是什么,热更新 router-view 下的根组件 都会报错 ,子组件不会 > > ``` > TypeError: parentComponent.ctx.deactivate is not a function > ```...
有官方大佬回复个吗?这个确实是有很大用处的提议。 keep-alive 可选地把 slots.default() 的 key 用作 root VNode 的 [cache key](https://github.com/vuejs/core/blob/769e5555f9d9004ce541613341652db859881570/packages/runtime-core/src/components/KeepAlive.ts#L289) ```html ``` keep-alive 的内部有 [ pruneCacheEntry( key: CacheKey ) => void](https://github.com/vuejs/core/blob/769e5555f9d9004ce541613341652db859881570/packages/runtime-core/src/components/KeepAlive.ts#L193) 方法,这个方法可以expose出来,我们用这个方法可以可控地移除缓存。
> see #4339 看来我只能砍需求了 !- -
> `include` 其实就可以实现了,把组件包裹一层自定义一下的 name 就可以了。 参考: https://github.com/hminghe/md-admin-element-plus/blob/main/src/components/multi-window/components/MultiWindowKeepAlive.vue > > 不过还有一点点BUG, 等这个合并了就完美了。#6235 给个赞,你的这个方式能解决我的问题!!!感谢大佬的思路! ```javascript // 代码大概会是这样子 import { h } from 'vue' export function wrapperComponent(fullPath: String, comp: VNode) { const wraper...
> > > > 不行啊 调用parentComp.ctx.deacti 报错 我上传了一个示例代码,你可以看一下, [给 keep-alive 下的 component 接收的组件包上一层自定义 name 的壳](https://github.com/chenhaihong/keep-alive-wrap-customed-name/blob/50b14e813bdf1e748639c693753674ecd19a9304/src/components/HelloWorld.vue#L34)
我自己项目上用没出现问题。 你这边是有报错还是警告吗?贴一下看看。
@HarisSpahija it dosn't work in my projects. 我给了我项目里的所有点式操作加上了可选操作符,然后解决了这个问题。 跟 @JimSuen 一样的解决方式,就像下面这样子, ```html {{ item }} ``` 虽然暂时解决了问题,但是在开发者工具上面的错误提示,让人费解,无法定位问题所在。 我尝试了在build代码的时候,关闭掉minify功能,然后打条件断点,想定位是哪个组件出现了问题,但是无法定位出来问题。 而且一打上条件断点,应用渲染变得十分缓慢,调试地很难受, ``` TypeError: Cannot read properties of null (reading 'insertBefore') at insert...
建议给个最小复现代码。
@msojocs 抱歉这个我不是很清楚,我只是用vue有提供的api来包个壳,没有使用过这种方式。 你用的这个方式,如果vue组件内部的构成变更了,可能就不能正常使用了。