React-tags: Borrar entrada en desenfoque

Creado en 14 ene. 2020  ·  5Comentarios  ·  Fuente: i-like-robots/react-tags

Sería bueno si hubiera una forma de borrar la entrada sobre el desenfoque.

Esto podría hacerse si pudiéramos pasar una referencia a la entrada, o mediante un nuevo accesorio similar a clearInputOnDelete.

La razón en mi caso de uso es que si paso un conjunto fijo de sugerencias, y el usuario escribe algo que no coincide con una sugerencia, entonces desenfoca la entrada, entonces parece que su entrada fue válida y será conservó. Quiero que quede claro que no se conservará ninguna entrada de texto que no coincida.

question

Todos 5 comentarios

¿Ha pensado en utilizar la v6 de este componente?

https://github.com/i-like-robots/react-tags/tree/6.0

Esta versión tiene un método onBlur callback y .clearInput() 😄

¡Bonito! Me lo resuelve 🙂

@ i-like-robots Perdón por comentar nuevamente sobre esto, pero no tengo claro cómo acceder al método clearInput() ya que el paquete no expone ninguna referencia. Normalmente, usaría algo como this.reactTagsRef.current.clearInput() para acceder a un método secundario como ese.

Agregue un ref a su instancia del componente, usando el ejemplo en este repositorio y extendiéndolo con una devolución onBlur llamada

class App extends React.Component {
  constructor (props) {
    super(props)

    this.state = {
      tags: [],
      suggestions: []
    }

+   this.reactTags = React.createRef()
  }

  onDelete (i) {
    const tags = this.state.tags.slice(0)
    tags.splice(i, 1)
    this.setState({ tags })
  }

  onAddition (tag) {
    const tags = [].concat(this.state.tags, tag)
    this.setState({ tags })
  }

+ onBlur () {
+   if (this.reactTags.current) {
+     this.reactTags.current.clearInput()
+   }
+ }

  render () {
    return (
        <ReactTags
+         ref={this.reactTags}
          tags={this.state.tags}
          suggestions={this.state.suggestions}
+         onBlur={this.onBlur.bind(this)}
          onDelete={this.onDelete.bind(this)}
          onAddition={this.onAddition.bind(this)}
        />
    )
  }
}

¡Perfecto gracias!

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

Temas relacionados

luciemac picture luciemac  ·  7Comentarios

williamsidewalk picture williamsidewalk  ·  4Comentarios

yrik picture yrik  ·  4Comentarios

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

yrik picture yrik  ·  10Comentarios