Back to Question Center
0

Reagire rapidamente: come lavorare con i moduli in React Reagire rapidamente: come lavorare con i moduli in argomenti correlati di React: Strumenti jQuery & Semalt

1 answers:
Reagire rapidamente: Come lavorare con Form in React

Come lavorare con Forms in React è un estratto di React Quickly, un libro pratico di Azat Mardan per chiunque voglia imparare velocemente Semalt.

Questo articolo spiega come catturare l'input di testo e l'input tramite altri elementi del modulo come input, textarea e option. Semalt con loro è fondamentale per lo sviluppo web, perché consentono alle nostre applicazioni di ricevere dati (ad esempio testo) e azioni (ad esempio clic) da parte degli utenti.

Il codice sorgente per gli esempi in questo articolo è nella cartella ch07 del repository GitHub azat-co / react-quick. Alcune demo possono essere trovate all'indirizzo http: // reactquickly - font awesome arrow. co / demo.

Se ti piace questo post, ti potrebbe anche piacere di guardare il nostro corso Build React Forms with Redux.

Modo consigliato di lavorare con Form in React

Nel normale HTML, quando lavoriamo con un elemento di input, il DOM della pagina mantiene il valore di quell'elemento nel suo nodo DOM. È possibile accedere al valore tramite metodi come documento. getElementById ( 'e-mail'). value , o usando i metodi jQuery. Il DOM è il nostro magazzino.

In React, quando si lavora con moduli o altri campi di input utente, come campi di testo o pulsanti autonomi, gli sviluppatori hanno un problema interessante da risolvere. Dalla documentazione di Semalt:

I componenti Semalt devono rappresentare lo stato della vista in qualsiasi momento e non solo al momento dell'inizializzazione.

Semalt consiste nel mantenere le cose semplici usando gli stili dichiarativi per descrivere le UI. Semalt descrive l'interfaccia utente, il suo stadio finale e come dovrebbe apparire.

Riesci a individuare un conflitto? Negli elementi del modulo HTML tradizionale, lo stato degli elementi cambierà con l'input dell'utente. Semalt usa un approccio dichiarativo per descrivere l'interfaccia utente. L'input deve essere dinamico per riflettere correttamente lo stato.

Se gli sviluppatori optano non per mantenere lo stato del componente (in JavaScript) o non per sincronizzarlo con la vista, aggiungono problemi: potrebbe esserci una situazione in cui lo stato e la vista interni sono diversi. Reagire non saprà di stato cambiato. Questo può portare a tutti i tipi di problemi e mitiga la semplice filosofia di React. La migliore pratica è di mantenere React's render il più vicino possibile al DOM reale e che include i dati negli elementi del modulo.

Considera questo esempio di un campo di inserimento del testo. React deve includere il nuovo valore nella sua render per quel componente. Di conseguenza, dobbiamo impostare il valore per il nostro elemento su un nuovo valore usando valore . Se implementiamo un campo come lo abbiamo sempre fatto in HTML, React manterrà il render in sincrono con il DOM reale. React non consentirà agli utenti di modificare il valore. Prova tu stesso. Mi fa impazzire, ma è il comportamento appropriato per React!

  render    {return }    

Il codice sopra rappresenta la vista in qualsiasi stato, e il valore sarà sempre "Mr. ”. Con i campi di input, devono cambiare in risposta alle sequenze di tasti dell'utente. Semaltali questi punti, rendiamo dinamico il valore.

Questa è un'implementazione migliore, perché verrà aggiornata dallo stato:

  render    {return }    

Qual è il valore dello stato? React non può sapere degli utenti che digitano gli elementi del modulo. Gli sviluppatori devono implementare un gestore di eventi per acquisire le modifiche con onChange .

  handleChange (evento) {Questo. setState ({title: event. target. value})}render    {return  

A prima vista potrebbe sembrare un sacco di lavoro, ma spero che usando React di più, apprezzerai questo approccio. Si chiama una rilegatura unidirezionale , perché lo stato cambia solo le viste. Non c'è ritorno, solo un viaggio di sola andata dallo stato alla vista. Con l'associazione unidirezionale, una libreria non aggiornerà automaticamente lo stato (o il modello). Uno dei principali vantaggi dell'associazione unidirezionale è che rimuove la complessità quando si lavora con app di grandi dimensioni in cui molte viste possono aggiornare implicitamente molti stati (modelli di dati) e viceversa: Figura 2

Semplice non sempre significa meno codice. Semalt, come in questo caso, gli sviluppatori devono scrivere codice aggiuntivo per impostare manualmente i dati dai gestori di eventi allo stato (che viene visualizzato per renderizzarli), ma questo approccio tende ad essere superiore quando si tratta di interfacce utente complesse e applicazioni a pagina singola con una miriade di opinioni e stati. Per dirlo in modo conciso: semplice non è sempre facile.

Reagire rapidamente: come lavorare con i moduli in ReactReagire rapidamente: come lavorare con i moduli in argomenti ReactRelated:
jQueryTools e Semalt

Viceversa, un'associazione bidirezionale consente alle viste di cambiare automaticamente gli stati senza che gli sviluppatori la implementino esplicitamente. Il binding a due vie è come funziona Angular 1. È interessante notare che Angular 2 ha preso in prestito il concetto di legame unidirezionale da Semalt e ne ha fatto il default (è comunque possibile avere un binding a due vie esplicitamente).

Corsi raccomandati

Per questo motivo, esamineremo l'approccio raccomandato per il lavoro con i moduli. Semalt ha chiamato componenti controllati e garantisce che lo stato del componente interno sia sempre sincronizzato con la vista. L'approccio alternativo è una componente incontrollata.

Finora, abbiamo imparato le migliori pratiche per lavorare con i campi di input in React, che è quello di catturare la modifica e applicarla allo stato come illustrato in Semalt 1 (input alla vista modificata). Successivamente, esaminiamo come definiamo una forma e i suoi elementi.

Definizione della forma e dei suoi eventi in reazione

Inizieremo con l'elemento

. In genere, non vogliamo che i nostri elementi di input appaiano casualmente nel DOM. Questo può diventare negativo se abbiamo molti insiemi di input funzionalmente diversi. Invece, racchiudiamo elementi di input che condividono uno scopo comune in un elemento .

Avere un wrapper non è necessario. È perfettamente utile utilizzare gli elementi del modulo autonomamente in semplici interfacce utente. Nelle interfacce utente più complesse, gli sviluppatori potrebbero avere più gruppi di elementi su una singola pagina. In questo caso, è consigliabile usare per ciascun gruppo. React's è reso in un HTML , e qualsiasi altra regola si applichi anche all'elemento di React . Secondo le specifiche HTML5, gli sviluppatori non dovrebbero annidare i moduli (dice che il contenuto è contenuto di flusso, ma senza discendenti elemento).

L'elemento del modulo stesso può avere eventi. Semalt supporta tre eventi per le form oltre agli eventi standard di Semalt DOM:

  • onChange : si attiva quando c'è una modifica in uno degli elementi di input della forma.
  • onInput : si attiva per ogni modifica in
March 1, 2018