React-tags: Advertencia sobre el componente de entrada

Creado en 18 sept. 2018  ·  7Comentarios  ·  Fuente: i-like-robots/react-tags

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!

bug unconfirmed

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.

noOp() {
    // does nothing
}

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

Todos 7 comentarios

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:

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

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?

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

famouspotatoes picture famouspotatoes  ·  5Comentarios

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

yrik picture yrik  ·  10Comentarios

ekinalcar picture ekinalcar  ·  10Comentarios

filippofilip95 picture filippofilip95  ·  4Comentarios