javascript - 为什么 Vue 将未指定的布尔道具视为错误?
问题描述
请看这个例子
如果我有这样的组件:
<template>
<div v-if="on">
Hello
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
on: Boolean
},
mounted() {
console.log(this.on)
}
};
</script>
然后我渲染该组件并在道具上不指定任何内容
<template>
<div >
<HelloWorld/>
</div>
</template>
这将输出false
而不是undefined
?
这是为什么?
无论如何我可以检测到人们是否没有指定道具,所以我可以使用 lodash_.isBoolean
来检测它吗?
目前,我知道的唯一方法是将默认值手动设置为undefined
.
解决方案
您可以在其上设置一个默认值并检查该值是否仍然相同,然后用户没有传递道具,但有些情况下您无法真正将您的值与其默认值进行比较,例如道具是否为功能。
你可以this.$options.propsData
在你的组件内部。如果 prop 存在于此,则用户已明确设置它;默认值未显示。
推荐阅读
- c - 如何在c中拆分字符串
- javascript - 使用 JS 槽 HTML 显示 Json
- wordpress - 覆盖 WooCommerce 过滤器中最低和最高价格的标准请求处理,以从自定义字段按价格获取产品
- java - 我的 Java 客户端没有读取整个 Socket 响应
- sapui5 - sapUI5 应用程序中的 Cloudinary SDK
- vb.net - How to Automatically Select a ListBox Item Based on the Current Month (VB.NET)
- c - 链接 .o 对象时,Makfile 会同时生成 `(.text+0x0): multiple definition` 和 `(.text+0x44): undefined reference to` 错误
- javascript - 无法在实时服务器上运行 Reactjs 代码
- java - 如何用另一个 java 对象的值更新一个 java 对象的所有字段?
- powershell - 如何在 powershell Pro Tools 中为 LogonName 组合 FirstName 和 LastName?