React-tags: Peringatan pada Komponen Input

Dibuat pada 18 Sep 2018  ·  7Komentar  ·  Sumber: i-like-robots/react-tags

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!

bug unconfirmed

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.

noOp() {
    // does nothing
}

<ReactTags
tags={this.state.tags}
suggestions={this.state.suggestions}
handleAddition={this.handleTagAddition}
handleDelete={this.handleTagDelete}
inputAttributes={{ onChange: this.noOp }}
/>

Semua 7 komentar

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:

https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/ReactControlledValuePropTypes.js#L32 -L46

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?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

thienanle picture thienanle  ·  9Komentar

V6
i-like-robots picture i-like-robots  ·  11Komentar

yrik picture yrik  ·  4Komentar

filippofilip95 picture filippofilip95  ·  4Komentar

yrik picture yrik  ·  10Komentar