React-tags: Limpando entrada no desfoque

Criado em 14 jan. 2020  ·  5Comentários  ·  Fonte: i-like-robots/react-tags

Seria bom se houvesse uma maneira de limpar a entrada no desfoque.

Isso poderia ser feito se pudéssemos passar um ref para a entrada ou por meio de um novo prop semelhante a clearInputOnDelete.

O motivo do meu caso de uso é que se eu passar um conjunto fixo de sugestões e o usuário digitar algo que não corresponda a uma sugestão, ele desfocará a entrada e, então, parecerá que a entrada foi válida e será mantido. Quero que fique claro que qualquer entrada de texto não correspondente não será mantida.

question

Todos 5 comentários

Você já olhou como usar a v6 deste componente?

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

Esta versão tem tanto um onBlur callback e .clearInput() método 😄

Agradável! Resolve para mim 🙂

@ i-like-robots Desculpe por comentar sobre isso, mas não está claro para mim como acessar o método clearInput() , já que não há nenhuma referência exposta pelo pacote? Normalmente eu usaria algo como this.reactTagsRef.current.clearInput() para acessar um método filho como esse.

Adicione ref à sua instância do componente, usando o exemplo neste repo e estendendo-o com um retorno de chamada onBlur :

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)}
        />
    )
  }
}

Perfeito, obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

filippofilip95 picture filippofilip95  ·  4Comentários

williamsidewalk picture williamsidewalk  ·  4Comentários

luciemac picture luciemac  ·  7Comentários

yrik picture yrik  ·  4Comentários

ekinalcar picture ekinalcar  ·  10Comentários