Arbeide med tabeller i reaksjon, del 1

Oversikt

Et av de vanligste brukergrensesnittelementene for å presentere dataene dine er et bord. Det viser seg at det er mange aspekter å kontrollere når du arbeider med bord, for eksempel:

  • definerer kolonner og overskrifter
  • ulike celleformater (tekst, tall, boksene)
  • endre størrelse
  • filtrering
  • dynamisk voksende
  • styling

I denne todelte serien vil du lære om innsatsene og innsatsene for å jobbe med tabelldata i React ved hjelp av React Bootstrap Table-komponenten. Du vil kunne lage sofistikerte og profesjonelle utseende tabeller som standard med liten innsats og likevel kunne tilpasse hver del du vil.

Lag en Vanilla React App

Jeg antar at du er kjent med React selv og vil fokusere på å jobbe med React Bootstrap Table. Envato Tuts + har en flott serie på React du kan lese for bakgrunn.

I et nøtteskall brukte jeg React-create-app til å lage en vanilje-React-app og installerte deretter reaksjonsstart-bordet: npm installere reager-bootstrap-table - save.

Det er viktig å legge til bootstrap CSS til filen public / index.html.

            Reager App    

WebStorm

Hvis du bruker JetBrains 'WebStorm, og du vil kjøre testene, legger du til --env = jsdom i din run-config.

Grunnleggende tabell

Vi starter med et grunnleggende bord. Her er en grunnleggende tabellkomponent. Det importerer BoostrapTable og TableHeaderColumn fra reager-bootstrap-table og også CSS fra dist-katalogen. 

De render () Metoden gjør et bord med tre kolonner: "ID", "Navn" og "Verdi". De faktiske dataene i tabellen kommer fra "data" -egenskapen (this.props.data). Dataene inneholder navnene på noen tegn fra det morsomme showet Arrested Development.

Import React, Component fra 'reagere'; importer BootstrapTable, TableHeaderColumn fra 'react-bootstrap-table'; importer '... /css/Table.css'; importere '... / ... / node_modules / reager-bootstrap-table / css / reager-bootstrap-table.css' klasse Tabell1 utvider komponent render () return 
ID Navn Verdi
); eksporter standard Tabell1;

Jeg instanserte BasicTable i renderen () -metoden til standard App.js og bestod noen hardkodede data:

 Import React, Component fra 'reagere'; importer './App.css'; importer tabell1 fra './components/Table1' var data = [id: 1, navn: 'Gob', verdi: '2', id: 2, navn: 'Buster', verdi: '5', id: 3, navn: 'George Michael', verdi: '4']; klassen App utvider komponent render () return ( 

Grunnleggende tabell

); eksporter standard app;

For å vise tabellen, skriv inn: npm start. Konfigurasjonen opprettet av create reagere-app ser på koden din og vil kompilere når du endrer noe, så du trenger å kjøre bare én gang, og deretter vil alle endringer automatisk bli reflektert.

Kompilert med hell! Du kan nå vise reaksjonstabell i nettleseren. Lokal: http: // localhost: 3000 / På nettverket ditt: http://192.168.1.136:3000/ Merk at utviklingsbygget ikke er optimalisert. For å lage en produksjonsbygg, bruk garnbygging. 

Her er resultatet:

Merk at hver kolonne har nøyaktig samme bredde.

Arbeider med kolonner

Du kan kontrollere mange aspekter av kolonnene. Spesielt kan kolonnebredder angis i absolutte enheter som prosentandeler eller uspesifiserte. Kolonnebredden på uspesifiserte kolonner er resten fordelt like mye. For eksempel for en tabellbredde på 100 px, en kolonne angitt 15 px, en andre kolonne spesifisert 25% (25 px) og en tredje kolonne spesifisert 30% (15 px). 

To andre kolonner angir ikke en bredde. Kolonnene 1, 2 og 3 brukte 70 px sammen, som etterlater 30 px for kolonnene 4 og 5, som vil dele det likt. Kolonne 4 og 5 vil hver ha en bredde på 15 px. Merk at hvis bordet er endret, endres tallene. Bare kolonne 1 vil alltid være 15 px bred. 

De andre kolonnene beregnes basert på bordbredden. Du kan også håndtere justeringen av tekst og kolonner, samt stilen til overskrifter og kolonner. Her er et eksempel på hvordan du angir forskjellige kolonnebredder, tekstjustering og tilpassede stiler:

Import React, Component fra "reagere" import BootstrapTable, TableHeaderColumn fra 'react-bootstrap-table' import '... /css/Table.css' import '... /dist/react-bootstrap-table-all.min. css 'klasse Table2 utvider komponent render () return ( 
ID Navn Verdi
) eksporter standard Tabell2

Styling ditt bord

Du så hvordan du stiler individuelle kolonner og overskrifter, men styling kan gå mye lenger. React-bootstrap-table gir mange muligheter for tilpasning. Først kan du bare legge til stripede og sveveattributtene til BootstrapTable-komponenten for å få alternative bakgrunnsfarger på hver rad: 

For å style alle rader, bruk trClassName 

Hvis du vil bli veldig fancy, kan trStyle fungere. Sjekk ut følgende tabellkomponent som stiler annerledes rader der navnet er "George Michael":

Import React, Component fra "reagere" import BootstrapTable, TableHeaderColumn fra 'react-bootstrap-table' import '... /css/Table.css' import '... /dist/react-bootstrap-table-all.min. css 'funksjon rowClassNameFormat (rad, rowIdx) // rad er hele rad objekt // rowIdx er indeks av rad console.log (rad) tilbake rad [' name '] ===' George Michael '? 'GeorgeMichael-Row': 'Andre-Row';  klasse Tabell 3 utvider komponent render () return ( 
ID Navn Verdi
) eksporter standard Tabell3

De George Michael-Rad og Andre-Rad CSS klasser er definert i Table.css:

.Tabelloverskrift bakgrunnsfarge: #ccc; farge: blå; polstring: 10px; tekstjustering: venstre;  .GeorgeMichael-Row bakgrunnsfarge: plomme;  .Other-Row bakgrunnsfarge: greenyellow; 

Velger rader

Når du har dataene dine i et bord, vil du kanskje velge noen rader for å utføre noen operasjoner på dem. React-bootstrap-table gir et bredt utvalg av valgalternativer. Alle alternativene er organisert i et enkelt objekt du overfører til komponenten som selectRow Egenskap. Her er noen av valgalternativene:

  • enkelvalgsmodus (radioknapp)
  • flervalgsmodus (avkrysningsboks)
  • konfigurerbar kolonnevalgbredde
  • velg på radeklikk: som standard må du klikke på velgeren (radioknapp eller avkrysningsboks)
  • skjul utvalgskolonne (nyttig hvis velg på rad klikk er sant)
  • endre bakgrunnsfargen på utvalget
  • innledende utvalgte rader
  • utvalgskroker (på en rad eller når alle rader er valgt).

Følgende komponenter viser mange av disse alternativene:

Import React, Component fra "reagere" import BootstrapTable, TableHeaderColumn fra 'react-bootstrap-table' import '... /css/Table.css' import '... /dist/react-bootstrap-table-all.min. css 'funksjon onSelectRow (rad, isSelected, e) if (isSelected) alert (' Du har valgt '$ row [' name '] ") const selectRowProp = modus:' avkrysningsboks ', klikkToVelg: true , unselectable: [2], valgt: [1], onSelect: onSelectRow, bgColor: 'gold'; klasse Table4 utvider komponent render () return 
ID Navn Verdi
) eksporter standard Tabell4

Konklusjon

I denne delen opprettet vi et enkelt React-program ved hjelp av reaksjonsopprett-app, lagt til React-Bootstrap-Table, fylte en tabell med data, arbeidet med kolonner, stylet bordet og utvalgte rader. 

I neste del fortsetter vi reisen ved å utvide rader, legge til rader, slette rader og dekke paginering, celleredigering og avansert tilpasning. Følg med.