Saya mendapat peringatan menggunakan ReactTags
:
Warning: Failed prop type: You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.
in input (created by Input)
in div (created by Input)
in Input (created by ReactTags)
in div (created by ReactTags)
in div (created by ReactTags)
Dari apa yang dikatakan di sini kita mungkin harus mengubah https://github.com/i-like-robots/react-tags/blob/master/lib/Input.js#L78 dengan sesuatu seperti:
defaultValue={query}
Bagaimana menurutmu?
Terima kasih!
Saya mengalami masalah yang sama, ada saran?
Saya khawatir saya tidak melihatnya sendiri, bisakah Anda memberi tahu saya versi React yang Anda gunakan?
Saya menggunakan Bereaksi 16.3.2
@i-like-robots Saya juga mendapatkan masalah ini.
Saya menambahkan PR untuk mengubah ke defaultValue, tetapi jika Anda menginginkan peretasan yang menghindari peringatan hingga ini diperbaiki, Anda dapat menambahkan metode noop ke kelas Anda yang menggunakan ReactTags dan merujuknya sebagai onChange untuk komponen Anda. Ini jelek, tapi itu akan menghentikan peringatan.
noOp() {
// does nothing
}
<ReactTags
tags={this.state.tags}
suggestions={this.state.suggestions}
handleAddition={this.handleTagAddition}
handleDelete={this.handleTagDelete}
inputAttributes={{ onChange: this.noOp }}
/>
Ini adalah masalah yang menarik, telah dibahas panjang lebar beberapa tahun yang lalu di https://github.com/facebook/react/issues/1118 (walaupun saya belum pernah melihat peringatan ini, dengan versi React apa pun termasuk 16.3.2! )
Secara teknis tidak ada yang _salah_ dengan implementasi saat ini, tetapi saya setuju peringatan yang mengacaukan konsol itu mengganggu dan harus dihindari.
Saya tidak yakin bahwa pengaturan defaultValue
adalah solusi yang tepat karena mungkin memiliki konsekuensi yang tidak diinginkan (lihat https://github.com/i-like-robots/react-tags/pull/139#issuecomment-431006214 ) tetapi kemungkinan ada beberapa solusi lain yang tersedia.
Melihat ini lagi, saya dapat melihat bahwa peringatan ini memiliki 5 kondisi:
Ini adalah kondisi pertama yang menarik bagi saya karena secara default _should_ ini mengevaluasi ke true
karena nilai default untuk state.query
adalah string kosong. Oleh karena itu, ini harus menyebabkan fungsi kembali lebih awal dan tidak mengeluarkan peringatan.
Oleh karena itu untuk memicu peringatan ini saya harus mengubah status default (https://github.com/i-like-robots/react-tags/blob/master/lib/ReactTags.js#L35) untuk menjadikannya nilai yang benar.
Apakah ada di antara Anda yang mengalami memiliki contoh yang menunjukkan masalah ini sehingga saya dapat melihatnya lebih dekat?
Komentar yang paling membantu
Saya menambahkan PR untuk mengubah ke defaultValue, tetapi jika Anda menginginkan peretasan yang menghindari peringatan hingga ini diperbaiki, Anda dapat menambahkan metode noop ke kelas Anda yang menggunakan ReactTags dan merujuknya sebagai onChange untuk komponen Anda. Ini jelek, tapi itu akan menghentikan peringatan.