Recibo una advertencia usando 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)
Por lo que se dice aquí , probablemente deberíamos cambiar https://github.com/i-like-robots/react-tags/blob/master/lib/Input.js#L78 por algo como:
defaultValue={query}
¿Qué piensas?
¡Gracias!
Tengo el mismo problema, ¿alguna sugerencia?
Me temo que no he visto esto yo mismo, ¿podría decirme qué versión de React está usando?
Estoy usando React 16.3.2
@ i-like-robots También tengo este problema.
Agregué un PR para cambiar a defaultValue, pero si desea un truco que evite la advertencia hasta que esto se solucione, puede agregar un método noop a su clase que use ReactTags y hacer referencia a él como onChange para su componente. Es feo, pero detendrá las advertencias.
noOp() {
// does nothing
}
<ReactTags
tags={this.state.tags}
suggestions={this.state.suggestions}
handleAddition={this.handleTagAddition}
handleDelete={this.handleTagDelete}
inputAttributes={{ onChange: this.noOp }}
/>
Este es un tema interesante, se discutió extensamente hace algunos años en https://github.com/facebook/react/issues/1118 (aunque nunca he visto esta advertencia, ¡con cualquier versión de React incluida la 16.3.2! )
No hay nada técnicamente _ incorrecto_ con la implementación actual, pero estoy de acuerdo en que las advertencias que abarrotan la consola son molestas y deben evitarse.
No estoy seguro de que configurar defaultValue
sea la solución correcta, ya que puede tener consecuencias no deseadas (consulte https://github.com/i-like-robots/react-tags/pull/139#issuecomment-431006214 ) pero existen potencialmente otras soluciones alternativas disponibles.
Analizando esto un poco más, puedo ver que esta advertencia tiene 5 condiciones:
Es la primera condición que me interesa porque, de forma predeterminada, esto _debería_ evaluarse en true
porque el valor predeterminado para state.query
es una cadena vacía. Por lo tanto, esto debería hacer que la función regrese antes y no genere una advertencia.
Por lo tanto, para activar esta advertencia, tuve que cambiar el estado predeterminado (https://github.com/i-like-robots/react-tags/blob/master/lib/ReactTags.js#L35) para convertirlo en un valor verdadero.
¿Alguno de ustedes que está experimentando tiene un ejemplo que demuestre el problema para que pueda analizarlo más de cerca?
Comentario más útil
Agregué un PR para cambiar a defaultValue, pero si desea un truco que evite la advertencia hasta que esto se solucione, puede agregar un método noop a su clase que use ReactTags y hacer referencia a él como onChange para su componente. Es feo, pero detendrá las advertencias.