问题背景
当我在使用 ant desigin vue中的message组件时,我使用如下的调用方式:
message.error({
content: '',
key: 'time-msg',
});
这是会出现提示框,但不能自动消失,现象如下图所示:
问题分析
进入到组件的源码分析问题,首先看到message组件在生成api的时候,会对传入的content进行校验,如下所示:
在这里我们传入的content就是
{
content: '',
key: 'time-msg',
}
校验为false,所以直接透传了content
到了创建vNode的时候,把这个content直接包给了标签,入下图所示:
这里创建了message的弹窗dom,在销毁的时候直接导致了vue运行时错误,所以就导致无法自动消失,如下图:
解决方案
-
直接修改源码,因为我们对组件库进行了二次封装,所以直接在源码层面做了容错处理
-
在传入参数的时候:如果传入Object,那么content字段的value不能是空字符串,需要在业务层自行处理