2.4.2
https://jsfiddle.net/50wL7mdz/50757/
Akses $ attrs sebagai objek dalam konteks komponen, jika tidak ada alat peraga yang disediakan.
$ attrs adalah objek yang berisi props yang tidak dikenal. Oleh karena itu saya mengharapkan objek kosong, ketika tidak ada properti yang ditentukan pada tag komponen.
$ attrs tidak ditentukan
Karena penasaran, masalah apa yang Anda hadapi dengan memiliki $attrs
tidak ditentukan? Apakah Anda mengakses $attrs.something
? (jika demikian, mengapa?)
sunting: Saya juga bertanya karena memiliki $attrs
sama tidak terdefinisi ketika tidak ada attrs sebenarnya bisa berguna
@greegus , jika Anda melakukan sesuatu seperti if ($attrs.myProp)
Anda dapat melakukan if ($attrs?.myProp)
dengan menggunakan babel-plugin-transform-optional-chaining .
Saya akan menilai ini sebagai perilaku yang diharapkan, tetapi itu bisa diperdebatkan.
ping @gus
Baru saja mengalami ini dan itu pasti tidak terduga bagi saya bahwa $attrs
seharusnya menjadi undefined
.
Misalnya, jika Anda menulis aplikasi rencana yang dimulai tanpa todos, akan sangat aneh jika daftar dimulai dengan undefined
bukan []
. Anda harus menambahkan pernyataan if
(atau rangkaian opsional) di seluruh aplikasi Anda. Kasus ini serupa.
Untuk kasus khusus ketika pengguna ingin memeriksa apakah ada $attrs
, masih mungkin untuk menggunakan Object.keys($attrs).length
, jadi kasing itu masih tertutup.
Bagian yang benar-benar meyakinkan saya bahwa ini adalah bug, adalah bahwa $attrs
_is_ disetel ke objek kosong saat prop diteruskan ke komponen - seperti yang ditunjukkan OP. Jadi saat ini, benar-benar memeriksa apakah ada $attrs
akan membutuhkan kedua strategi:
$attrs && Object.keys($attrs).length
@chrisvfritz meyakinkan saya - itu bug.
@LinusBorg Sepertinya tidak ada yang menangani bug ini saat ini. Apa boleh saya minta pr untuk ini?
Tentu!
Komentar yang paling membantu
Baru saja mengalami ini dan itu pasti tidak terduga bagi saya bahwa
$attrs
seharusnya menjadiundefined
.Misalnya, jika Anda menulis aplikasi rencana yang dimulai tanpa todos, akan sangat aneh jika daftar dimulai dengan
undefined
bukan[]
. Anda harus menambahkan pernyataanif
(atau rangkaian opsional) di seluruh aplikasi Anda. Kasus ini serupa.Untuk kasus khusus ketika pengguna ingin memeriksa apakah ada
$attrs
, masih mungkin untuk menggunakanObject.keys($attrs).length
, jadi kasing itu masih tertutup.Bagian yang benar-benar meyakinkan saya bahwa ini adalah bug, adalah bahwa
$attrs
_is_ disetel ke objek kosong saat prop diteruskan ke komponen - seperti yang ditunjukkan OP. Jadi saat ini, benar-benar memeriksa apakah ada$attrs
akan membutuhkan kedua strategi: