2.4.2
https://jsfiddle.net/50wL7mdz/50757/
小道具が提供されていない場合は、コンポーネントコンテキスト内のオブジェクトとして$ attrsにアクセスします。
$ attrsは、認識されない小道具を含むオブジェクトです。 したがって、コンポーネントタグに小道具が指定されていない場合は、空のオブジェクトが必要になります。
$ attrsは未定義です
好奇心から、未定義の$attrs
を持つことで、どのような問題に直面していますか? $attrs.something
アクセスしていますか? (もしそうなら、なぜ?)
編集:属性がないときに$attrs
未定義であることが実際に役立つ可能性があるため、私も質問しています
@greegus 、 if ($attrs.myProp)
ようなことをしている場合は、 babel-plugin-transform-optional-chainingを使用してif ($attrs?.myProp)
実行できます。
これは予想される動作であると判断しますが、議論の余地があります。
ping @greegus
これに遭遇したばかりで、 $attrs
がundefined
なることは私にとって間違いなく予想外
あなたがいないドスで始まりTODOアプリを書いていた場合、リストを作ることは非常に奇妙なように始まるundefined
の代わりに[]
。 アプリ全体にif
ステートメント(またはオプションのチェーン)を追加する必要があります。 この場合も同様です。
ユーザーが$attrs
が存在するかどうかを確認したいニッチなケースでは、 Object.keys($attrs).length
を使用できるので、そのケースは引き続きカバーされます。
しかし、これがバグであると私に本当に納得させる部分は、OPが指摘しているように、小道具がコンポーネントに渡されるときに$attrs
_ is_が空のオブジェクトに設定されることです。 したがって、現在、 $attrs
が存在するかどうかを実際に確認するには、次の両方の戦略が必要です。
$attrs && Object.keys($attrs).length
@chrisvfritzは私を納得させました-それはバグです。
@LinusBorg現在、このバグに取り組んでいる人はいないようです。 このためのPRをいただけますか?
承知しました!
最も参考になるコメント
これに遭遇したばかりで、
$attrs
がundefined
なることは私にとって間違いなく予想外あなたがいないドスで始まりTODOアプリを書いていた場合、リストを作ることは非常に奇妙なように始まる
undefined
の代わりに[]
。 アプリ全体にif
ステートメント(またはオプションのチェーン)を追加する必要があります。 この場合も同様です。ユーザーが
$attrs
が存在するかどうかを確認したいニッチなケースでは、Object.keys($attrs).length
を使用できるので、そのケースは引き続きカバーされます。しかし、これがバグであると私に本当に納得させる部分は、OPが指摘しているように、小道具がコンポーネントに渡されるときに
$attrs
_ is_が空のオブジェクトに設定されることです。 したがって、現在、$attrs
が存在するかどうかを実際に確認するには、次の両方の戦略が必要です。