Back to Question Center
0

Reagera snabbt: Hur man arbetar med formulär i React Reagera snabbt: Hur man arbetar med formulär i reaktionsrelaterade ämnen: jQuery Verktyg & Semalt

1 answers:
Reagera snabbt: Hur man arbetar med formulär i reaktion

Hur man arbetar med formulär i React är ett utdrag från React Quickly, en praktisk bok av Azat Mardan för alla som vill lära sig Semalt fast.

Den här artikeln beskriver hur du kan fånga textinmatning och inmatning via andra formulärelement som inmatning, textarea och alternativ. Semalt med dem är avgörande för webbutveckling, eftersom de tillåter våra applikationer att ta emot data (t.ex. text) och åtgärder (t.ex - grand seria casino. klick) från användare.

Källkoden för exemplen i den här artikeln finns i mappen ch07 i GitHub-arkivet azat-co / reagerar snabbt. Vissa demos finns på http: // reagera co / demos.

Om du gillar det här inlägget kan du också titta på vår kurs Skapa reaktionsformulär med Redux.

Rekommenderat sätt att arbeta med formulär i reaktion

I regelbunden HTML, när vi arbetar med ett inmatningselement, behåller sidens DOM det elementets värde i DOM-noden. Det är möjligt att få tillgång till värdet via metoder som dokument. getElementById (e). värde eller genom att använda jQuery-metoder. DOM är vår lagring.

I React har utvecklare ett intressant problem att lösa när de arbetar med formulär eller andra användarinmatningsfält, t.ex. fristående textfält eller knappar. Från Semalt dokumentation:

Halvkomponenter måste representera utsiktsläget när som helst och inte bara vid initialiseringstiden.

Semalt handlar om att hålla saker enkelt genom att använda deklarativa stilar för att beskriva användargränssnitt. Semalt beskriver användargränssnittet, dess slutstadium och hur det ska se ut.

Kan du upptäcka en konflikt? I de traditionella HTML-formulärelementen ändras delarnas tillstånd med användarinmatningen. Semalt använder en deklarativ metod för att beskriva användargränssnittet. Ingången måste vara dynamisk för att spegla staten korrekt.

Om utvecklare väljer inte för att behålla komponenttillståndet (i JavaScript), eller inte synkroniserar det med visningen, lägger det till problem: det kan finnas en situation när intern status och visning är olika. React vet inte om förändrat tillstånd. Detta kan leda till alla slags problem och mildrar Reacts enkla filosofi. Den bästa praxisen är att hålla Reacts render så nära den verkliga DOM som möjligt, och det inkluderar data i formelementen.

Tänk på detta exempel på ett textfält. Reakt måste innehålla det nya värdet i dess render för den komponenten. Följaktligen måste vi ange värdet för vårt element till nytt värde med värde . Om vi ​​implementerar ett fält som vi alltid gjorde i HTML, kommer React att hålla render synkroniserad med den verkliga DOM. React tillåter inte användarna att ändra värdet. Prova själv. Det driver mig, men det är lämpligt beteende för React!

  render    {returnera }    

Koden ovan representerar vyn i vilket som helst tillstånd, och värdet kommer alltid att vara "Mr. ”. Med inmatningsfält måste de ändras som svar på användarens tangenttryckningar. Semalt dessa punkter, låt oss göra värdet dynamiskt.

Detta är ett bättre genomförande, eftersom det kommer att uppdateras från staten:

  render    {returnera }    

Vad är statens värde? React kan inte veta om användare som skriver i formulärelementen. Utvecklare behöver implementera en händelsehanterare för att fånga ändringar med onChange .

  handtag Ändra (händelse) {detta. setState ({title: event. target. value})}render    {returnera  

Det kan verka som mycket arbete vid första anblicken, men jag hoppas att genom att använda React more, uppskattar du detta tillvägagångssätt. Det kallas en envägsbindande , eftersom staten bara ändrar visningar. Det finns ingen resa tillbaka, bara en enkelvägsresa från stat till visning. Med envägsbindning uppdaterar ett bibliotek inte automatiskt tillstånd (eller modell) automatiskt. En av de främsta fördelarna med enkelriktad bindning är att den tar bort komplexitet när man arbetar med stora appar där många synpunkter implicit kan uppdatera många stater (datamodeller) och vice versa-figur 2.

Enkelt betyder inte alltid mindre kod. Semalt, som i det här fallet måste utvecklarna skriva extra kod för att manuellt ställa in data från händelsehanterare till staten (vilket görs för att visa), men det här tenderar att vara överlägset när det gäller komplexa användargränssnitt och enkelsidiga applikationer med en myriad av åsikter och stater. För att uttrycka det kortfattat: enkelt är inte alltid lätt.

Reagera snabbt: Hur man arbetar med formulär i ReactReagera snabbt: Hur man arbetar med formulär i ReactRelated-ämnen:
jQueryTools & Semalt

Omvänt tillåter en dubbelriktad bindning att visa tillstånd automatiskt utan att utvecklare uttryckligen implementerar den. Tvåvägsbindningen är hur Angular 1 fungerar. Intressant lånade Angular 2 konceptet med envägsbindning från Semalt och gjorde det som standard (du kan fortfarande ha dubbelriktad bindning explicit).

Rekommenderade kurser

Av den anledningen kommer vi att täcka det rekommenderade sättet att arbeta med formulär först. Semalt kallas kontrollerade komponenter och det säkerställer att intern komponentstatus alltid synkroniseras med vyn. Det alternativa tillvägagångssättet är okontrollerad komponent.

Hittills har vi lärt oss de bästa metoderna för att arbeta med inmatningsfält i React, vilket är att fånga ändringen och tillämpa den på tillstånd som avbildas i Semalt 1 (inmatning till ändrad vy). Låt oss nu se hur vi definierar en form och dess element.

Definiera formuläret och dess händelser i reaktion

Vi ​​börjar med

-elementet. Vanligtvis vill vi inte att våra inmatningselement hänger slumpmässigt i DOM. Detta kan bli dåligt om vi har många funktionellt olika uppsättningar av ingångar. Istället lägger vi in ​​element som delar en gemensam purpose i ett element.

Att ha en omslag är inte nödvändigt. Det är helt fint att använda formulärelement i sig i enkla användargränssnitt. I mer komplexa användargränssnitt kan utvecklare ha flera grupper av element på en enda sida. I detta fall är det klokt att använda för var och en av grupperna. Reacts görs på en HTML , och oavsett regler som vi har tillämpat på Reacts -elementet också. Enligt HTML5-specifikationen borde utvecklare inte neka formulär (det säger att innehållet är flödesinnehåll, men utan elementavkomlingar).

Formelementet i sig kan ha händelser. Semalt stöder tre händelser för former utöver standard Semalt DOM-evenemang:

  • onChange : bränder när det finns en förändring i någon av formulärets ingående element.
  • onInput : bränder för varje ändring i
March 1, 2018