[Bug Report] 动态切换插槽更新问题 #11727
Replies: 5 comments
-
目前确实只处理了单个 case,我理解根源解决还是需要 Vue 框架内部来做变更,能贴一下相关 PR 的链接不 |
Beta Was this translation helpful? Give feedback.
-
vuejs/core#6484 不太认为会更改此行为。 |
Beta Was this translation helpful? Give feedback.
-
为啥不太认为会更改此行为呢,我看这个 PR 的改动是合理的,提 PR 的开发者是 Vuetify Team 成员,估计 Vuetify 也遇到了类似的问题。 |
Beta Was this translation helpful? Give feedback.
-
改动是合理的,你可以跟进下这个问题吗,不知道为什么这么久了没有回复。 |
Beta Was this translation helpful? Give feedback.
-
我看 PR 里有回复了,可以继续观察下~ |
Beta Was this translation helpful? Give feedback.
-
重现链接
https://codesandbox.io/s/vant-3-issue-template-forked-mzx0b6?file=/src/App.vue
Vant 版本
4.0.2
描述一下你遇到的问题。
此问题引用 #11368 因为涉及多个组件所以重新开一个。
个别组件使用动态切换插槽不更新。此问题是 vue 插槽更新策略的问题 https://github.com/vuejs/core/blob/main/packages/runtime-core/src/componentSlots.ts#L207 。
如果值是
null / undefined
用in
检测也会存在所以不会删除。有更改此行为的 pr 但没有任何回复。所以这个不是这单个组件的问题,当然要在特定的用例下才会复现所以这并不常见,我复现了一个 https://codesandbox.io/s/vant-3-issue-template-forked-mzx0b6?file=/src/App.vue 用例。
所以要解决此类问题需要在使用
v-slots={{ a: () => <Cell>, b: null, c: undefined }}
命名接收插槽地方去排除null / undefined
即可修复。我看到你已经通过判断内容修复了此问题,是否考虑应从根源解决和全部修复。重现步骤
使用
v-if
切换插槽。设备/浏览器
No response
Beta Was this translation helpful? Give feedback.
All reactions