vuejs2 - Vue作用域插槽子不呈现插槽内容
问题描述
我想我偶然发现了一些非常奇怪的东西。我有一个Menu
组件,它有两种管理下拉列表可见性的方法div
:
- 内部使用本地状态;
- 用于
v-model
跟踪父组件。
我还有一个名为MenuItem
. 这MenuItem
(一个或多个)将被传递到Menu
默认插槽中。MenuItem
有一个自己的插槽,用于图标。
它Menu
还有一个用于“激活器”的插槽,一个用于切换菜单可见性的元素。这可以是常规插槽,也可以是作用域插槽。
如果菜单的可见性是通过作用域插槽处理的:
<Menu>
<template v-slot:activator="{ on }">
<button v-on="on" type="button">Click me</button>
</template>
</Menu>
然后,图标MenuItem
将在菜单第一次可见时呈现,但随后对可见性的更改将不会呈现图标。图标槽是可选的,所以我使用 来检查它的存在this.$slots['icon-left']
,并且在第一次渲染之后这是undefined
.
但是,如果我使用 管理父组件的可见性,v-model
则不存在此行为。
<Menu v-model="isMenuVisible">
<template v-slot:activator>
<button @click="isMenuVisible = !isMenuVisible" type="button">Click me</button>
</template>
</Menu>
我v-if
用于切换下拉菜单的可见性。如果我使用v-show
. 如果我不检查this.$slots['icon-left']
.
基本上我很困惑为什么会这样,我什至不知道谷歌是什么。
解决方案
推荐阅读
- serverless-framework - Void 处理程序的本地无服务器调用 - InvokeBridge 异常
- python - on_reaction_add 自定义表情符号
- javascript - TypeError:无法读取 null 的属性“值”| 反应js |
- ios - 如何拦截地图视图的平移和缩放(Swift 4)
- c - 树视图更改项目图像的颜色
- javascript - 在 VUE 上添加自定义 service worker
- java - Java Jframe ICONFIED 关闭失败
- php - PHP MySQL select all matching rows ans echo another table rows
- python - python程序中的错误。“预期二维数组,但得到一维数组”
- r - Unable to run parameter tuning for XGBoost regression model using caret