2.12.3
MAC, Chrome 61,
https://codepen.io/anon/pen/EvKmNO?editors=001
Silakan terlihat di konsol untuk memeriksa perilaku dalam sampel Codepen sambil mengklik pada \, yang \ dan \ elemen
Properti target dari peristiwa yang dipancarkan harus selalu menjadi \
Acara dipicu dengan target yang ditetapkan ke elemen lain (elemen anak)
Mengklik teks dan / atau ikon di tombol mengubah properti target acara menjadi elemen \ atau \ alih-alih elemen
menambahkan aturan pointer-events: none
kepada anak-anak memecahkan masalah tetapi itu hanya saran karena saya tidak yakin apakah ini sebenarnya bug atau fitur..
Saya pikir itu bug... Bisakah Anda memberi kami PR untuk memperbaikinya?
Oke, saya akan mencoba membuat PR minggu ini :+1:
@benjycui Saya tidak begitu mengerti mengapa target acara harus selalu disetel ke elemen tombol. Target dari suatu peristiwa harus menjadi elemen di mana peristiwa itu berasal.
@jddxf tepatnya, ketika Anda mengklik <Button/>
Anda berharap itu akan diteruskan sebagai target, terlepas dari bagian mana dari <Button/>
Anda klik. (itulah seluruh janji modul dan komponen, satu set input dan satu set output yang konsisten)
Sekarang komponen Button mungkin memiliki <span/>
atau elemen lain di bawah tenda (Yang bahkan tidak dapat digunakan karena tidak ada yang tahu itu ada, itu hanya di bawah tenda), elemen ini mungkin pembungkus, mungkin tidak terlihat atau terintegrasi di <Button/>
. sekarang bayangkan mengklik Tombol yang sama berperilaku berbeda setiap kali, hanya karena beberapa kali Anda mengklik span
di dalam Button
dan beberapa kali pada Button
itu sendiri, itu untuk yakin tidak konsisten atau diinginkan.
Jadi intinya, imo target acara harus selalu disetel ke tombol, ketika elemen Button
diklik ( sub-komponen dan elemen harus diklik)
@mim-Armand Mengerti maksudmu. IMO, mungkin lebih baik untuk memberikan contoh Button
sebagai argumen dalam panggilan balik jika Anda ingin menawarkan konsistensi tingkat komponen. Jika argumennya adalah instance Event
(atau lebih khusus React.SyntheticEvent
), saya kira targetnya adalah target acara nyata, yang menawarkan konsistensi tingkat dom.
Sebagai catatan tambahan, Anda selalu dapat merujuk ke button
dengan event.currentTarget
.
Komentar yang paling membantu
@mim-Armand Mengerti maksudmu. IMO, mungkin lebih baik untuk memberikan contoh
Button
sebagai argumen dalam panggilan balik jika Anda ingin menawarkan konsistensi tingkat komponen. Jika argumennya adalah instanceEvent
(atau lebih khususReact.SyntheticEvent
), saya kira targetnya adalah target acara nyata, yang menawarkan konsistensi tingkat dom.Sebagai catatan tambahan, Anda selalu dapat merujuk ke
button
denganevent.currentTarget
.