React-tags: Eingabe bei Unschärfe löschen

Erstellt am 14. Jan. 2020  ·  5Kommentare  ·  Quelle: i-like-robots/react-tags

Es wäre schön, wenn es eine Möglichkeit gäbe, Eingaben bei Unschärfe zu löschen.

Dies könnte geschehen, wenn wir eine Referenz an die Eingabe übergeben könnten, oder über eine neue Eigenschaft ähnlich clearInputOnDelete.

Der Grund für meinen Anwendungsfall ist, dass, wenn ich einen festen Satz von Vorschlägen übergebe und der Benutzer etwas eingibt, das nicht mit einem Vorschlag übereinstimmt, er die Eingabe defokussiert, dann sieht es so aus, als ob seine Eingabe gültig war und sein wird gehalten. Ich möchte, dass klar ist, dass nicht übereinstimmende Texteingaben nicht beibehalten werden.

question

Alle 5 Kommentare

Haben Sie sich die Verwendung von v6 dieser Komponente angesehen?

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

Diese Version hat sowohl einen onBlur Callback als auch eine .clearInput() Methode 😄

Schön! Löst es für mich 🙂

@i-like-robots Entschuldigung, dass ich dies noch einmal kommentieren muss, aber es ist mir unklar, wie ich auf die Methode clearInput() zugreifen kann, da das Paket keine Referenz enthält? Normalerweise würde ich so etwas wie this.reactTagsRef.current.clearInput() um auf eine solche untergeordnete Methode zuzugreifen.

Fügen Sie Ihrer Instanz der Komponente ein ref , indem Sie das Beispiel in diesem Repository verwenden und es mit einem onBlur Callback erweitern:

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

Perfekt danke!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen