2.4.2
https://jsfiddle.net/50wL7mdz/50757/
Acceda a $ attrs como objeto dentro del contexto del componente, cuando no se proporcionaron accesorios.
$ attrs es un objeto que contiene accesorios no reconocidos. Por lo tanto, esperaría un objeto vacío, cuando no se especifican accesorios en la etiqueta del componente.
$ attrs no está definido
Por curiosidad, ¿a qué problema se enfrenta al tener un $attrs
indefinido? ¿Estás accediendo a $attrs.something
? (si es así, ¿por qué?)
editar: También estoy preguntando porque tener $attrs
igual indefinido cuando no hay atributos puede ser útil
@greegus , en caso de que esté haciendo algo como if ($attrs.myProp)
, puede hacer if ($attrs?.myProp)
usando babel-plugin-transform-optional-chaining .
Juzgaría que esto es un comportamiento esperado, pero es discutible.
ping @greegus
Me encontré con esto y definitivamente fue inesperado para mí que $attrs
alguna vez debería ser undefined
.
Por ejemplo, si estuviera escribiendo una aplicación de tareas que comienza sin todos, sería muy extraño que la lista comience como undefined
lugar de []
. Tendría que agregar if
declaraciones (o encadenamiento opcional) en toda su aplicación. Este caso es similar.
Para casos específicos en los que un usuario quiere comprobar si existe algún $attrs
, aún sería posible usar Object.keys($attrs).length
, por lo que ese caso todavía está cubierto.
Sin embargo, la parte que realmente me convence de que esto es un error es que $attrs
_is_ se establece en un objeto vacío cuando se pasa un accesorio a un componente , como señala el OP. Entonces, actualmente, verificar realmente si existe algún $attrs
requeriría ambas estrategias:
$attrs && Object.keys($attrs).length
@chrisvfritz me convenció: es un error.
@LinusBorg Parece que nadie está trabajando en este error actualmente. ¿Puedo tener una pr para esto?
¡Por supuesto!
Comentario más útil
Me encontré con esto y definitivamente fue inesperado para mí que
$attrs
alguna vez debería serundefined
.Por ejemplo, si estuviera escribiendo una aplicación de tareas que comienza sin todos, sería muy extraño que la lista comience como
undefined
lugar de[]
. Tendría que agregarif
declaraciones (o encadenamiento opcional) en toda su aplicación. Este caso es similar.Para casos específicos en los que un usuario quiere comprobar si existe algún
$attrs
, aún sería posible usarObject.keys($attrs).length
, por lo que ese caso todavía está cubierto.Sin embargo, la parte que realmente me convence de que esto es un error es que
$attrs
_is_ se establece en un objeto vacío cuando se pasa un accesorio a un componente , como señala el OP. Entonces, actualmente, verificar realmente si existe algún$attrs
requeriría ambas estrategias: