![]() | 1 0xbe 219 天前 KeepAlive |
3 sundev 219 天前 KeepAlive 的组件必须要有 Name ,是不是这个问题? |
5 zhhbstudio 219 天前 <zujian1 v-show="id==1"> <zujian2 v-show="id==2"> <zujian3 v-show="id==3"> |
![]() | 6 magicflower 219 天前 via Android keepalive + v-show ? |
7 sunorg OP |
![]() | 8 lisongeee 219 天前 store 状态提升到全局/组件外部,组件只保留纯渲染函数 |
![]() | 9 jardel 219 天前 组件开发需要”变量提升“ store 或者父级组件里 |
![]() | 10 lanced 219 天前 |
![]() | 11 really28 219 天前 <KeepAlive :include="cacheKeys"> <component :is="item.ref" :key="item.uid" // 使用全局唯一的 ID v-show="item.visible" /> </KeepAlive> 关键点是 key 参数,确保每一个是唯一的 |
12 zhhbstudio 219 天前 v-show 不会丢啊,v-show 值为 false 时就是 style="display:none;" |
![]() | 13 wangtian2020 219 天前 大不了不分组件了写在一个文件里不行吗 |
14 arnotong 219 天前 可以试试这样: <div v-for> <KeepAlive> <component :is=ref /> </KeepAlive> </div> |
15 sunorg OP @zhhbstudio @wangtian2020 @arnotong 验证过了,基于 data 这个结构来动态渲染组件,因为 component 在节点树上来回变化,会导致 dom 重新渲染,即使使用可 keepalive ,加 nanme 加 key 或者组合 v-show ,都会导致全新渲染。 最终使用了 css 的 grid 类来中间实现,多了很多计算高度偏移的工作,但大体解决了问题, |