[Component] slot "" is not found (for component "miniprogram_npm/tdesign-miniprogram/popup/popup").

学以致用 admin 2023-03-12 16:34 590 0

前言

TDesign 是一个比较好的微信小程序组件库。

在小程序开发工具的终端中输入如下命令进行安装

npm i tdesign-miniprogram -S --production

安装完之后,需要在微信开发者工具中对 npm 进行构建:工具 - 构建 npm

将 app.json 中的 "style": "v2" 移除(因为 该配置 表示启用新版组件样式,将会导致 TDesign 的组件样式错乱。)

更多信息可以查看官方文档:TDesign官网

问题

不可否认,TDesign很好用。

但是在用的时候,我们会发现它有个坑。虽然不影响运行,但是控制台一直会显示一个如下内容的警告信息

[Component] slot "" is not found (for component "miniprogram_npm/tdesign-miniprogram/popup/popup").

image.png

这个信息看着是有点不舒服的(本人强迫症),当然这个问题不一定是TDesign才有,我们自己开发一些其他组件时,也可能在不知不觉中整出这么个警告信息

原因

说完问题,找原因。

从控制台中,我发现我的这个问题出现在 TDesign 的popup组件中,到 miniprogram_npm/tdesign-miniprogram 目录中看下代码

image.png

TDesign 的 Popup 代码如下,可以看到 slot 都在 wx:if="{{realVisible}}"中

image.png

那么当 realVisible = false 的时候,页面中就没有 slot 了,但是中页面中我们定义了slot,所以出现了警告信息

解决方法

网上很多人建议,说只要这里加一个 wx:else 确保 slot 一直有就不会报错... (不发表评论)

事实上,我们只需要在 popup 使用的时候加个判断即可避免上面的警告信息

<t-popup visible="{{popupVisible}}" ....>
    <view wx:if="{{popupVisible}}">
    ...
    </view>
    <view wx:if="{{popupVisible}}" slot="content">
    ...
    </view>
    <view wx:if="{{popupVisible}}" slot="close-btn">
    ...
    </view>
</t-popup>

问题引刃而解!

评论区