2.4.2
https://jsfiddle.net/50wL7mdz/50757/
当没有提供道具时,在组件上下文中将$ attrs作为对象访问。
$ attrs是一个包含无法识别的道具的对象。 因此,当在组件标签上未指定任何道具时,我期望一个空对象。
$ attrs是未定义的
出于好奇,拥有未定义的$attrs
会面对什么问题? 您正在访问$attrs.something
吗? (如果是这样,为什么?)
编辑:我也在问,因为没有attrs时,未定义的$attrs
相等实际上是有用的
@greegus ,如果您正在执行if ($attrs.myProp)
,则可以使用babel-plugin-transform-optional-chaining来执行if ($attrs?.myProp)
。
我认为这是预期的行为,但这值得商bat。
ping @greegus
刚遇到这个问题,对我来说绝对是意外的, $attrs
应该是undefined
。
例如,如果您编写的待办事项应用程序没有待办事项开始,那么使列表以undefined
而不是[]
开头将是很奇怪的。 您必须在整个应用中添加if
语句(或可选的链接)。 这种情况是相似的。
对于小众情况,当用户想要检查是否有$attrs
存在时,仍然可以使用Object.keys($attrs).length
,因此该情况仍然适用。
确实使我确信这是一个错误的部分是,当将prop传递给组件时, $attrs
_is_设置为空对象-正如OP指出的那样。 因此,目前,要真正检查是否存在$attrs
需要两种策略:
$attrs && Object.keys($attrs).length
@chrisvfritz说服了我-这是一个错误。
@LinusBorg似乎目前没有人在研究此错误。 我可以为此做个公关吗?
当然!
最有用的评论
刚遇到这个问题,对我来说绝对是意外的,
$attrs
应该是undefined
。例如,如果您编写的待办事项应用程序没有待办事项开始,那么使列表以
undefined
而不是[]
开头将是很奇怪的。 您必须在整个应用中添加if
语句(或可选的链接)。 这种情况是相似的。对于小众情况,当用户想要检查是否有
$attrs
存在时,仍然可以使用Object.keys($attrs).length
,因此该情况仍然适用。确实使我确信这是一个错误的部分是,当将prop传递给组件时,
$attrs
_is_设置为空对象-正如OP指出的那样。 因此,目前,要真正检查是否存在$attrs
需要两种策略: