window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versjon: 2, } ;(function () { var w = vindu if (w.LeadBooster) { console.warn('LeadBooster finnes allerede') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() 7 tips og triks i React - The Codest
The Codest
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Industrier
    • Fintech og bankvirksomhet
    • E-commerce
    • Adtech
    • Helseteknologi
    • Produksjon
    • Logistikk
    • Bilindustrien
    • IOT
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
Pil tilbake GÅ TILBAKE
2022-05-09
Programvareutvikling

7 tips og triks i React

The Codest

Mohamed El Amine DADDOU

React Utvikler

Leter du etter måter å forbedre React-koden din på? Denne artikkelen inneholder tips og triks som alle React-utviklere bør kjenne til. La oss dykke ned i den!

Bruk TypeScript

Enten vi snakker om react eller andre biblioteker, vil bruk av Typescript være til stor hjelp i arbeidet med å holde kode organisert. la oss sammenligne følgende Javascript vs Typescript som håndterer props-typer.

import PropTypes fra 'prop-types'

function UserCard({ user }) {
return

{user.firstname}, {user.lastname}

}

UserCard.propTypes = {
user: PropTypes.shape({
fornavn: PropTypes.string.isRequired,
etternavn: PropTypes.string.isRequired
...
})
}

function UserList({ users }) {
return

{users.map((bruker) => )} }

}

UserList.propTypes = {
users: PropTypes.arrayOf(PropTypes.shape({
fornavn: PropTypes.string.isRequired,
etternavn: PropTypes.string.isRequired
...
}))
}
interface Bruker {
firstname: String!
etternavn: String!
...
}

function UserCard({ user }: { user: User }) {
return

{user.firstname}, {user.lastname}

}

function UserList({ users }: { users: User[] }) {
return

{users.map((bruker) => )} }

Tenk deg at du har alle dataskjemaene dine som grensesnitt på ett sted, og at du kan gjenbruke dem i resten av koden. På den måten unngår du ikke bare skrivefeil, men hvis du vil endre skjemaet, trenger du bare å gjøre det på ett sted.

I tillegg er mange kjente javascript-biblioteker i ferd med å migrere til Typescript, f.eks: AdonisJS

Separate presentasjons- og beholderkomponenter

Ved å skille mellom presentasjons- og containerkomponenter blir koden enklere å teste og resonnere rundt.

Presentasjonskomponenter er opptatt av hvordan ting ser ut. Den mottar sin data og atferd fra overordnede komponenter.

Beholderens komponenter er opptatt av hvordan ting fungerer. De sørger for data og atferd til presentasjons- eller andre beholderkomponenter.

Ved å bruke denne tilnærmingen kan vi gjenbruke de samme presentasjonskomponentene med ulike data og oppførsel. I tillegg gjør det koden vår renere og mye enklere å teste.

Se følgende eksempel med User Component, som brukes sammen med ulike containere som gir forskjellige data og oppførsel.

funksjon BuyerContainer() {
return
}

function SellerContainer() {
return
}

function UserComponent({ name, onClick }) {
return

}

Bruk React Hooks og funksjonelle komponenter Funksjonelle komponenter, som tidligere ble omtalt som tilstandsløse komponenter, er ikke lenger tilstandsløse. Takket være React Hooks kan du nå brukeState -kroken til å lagre tilstand i en funksjonell komponent. eller til og med bruke komponentens livssyklus ved hjelp av useEffect. Funksjonelle komponenter er enkle å lese og teste. React Core har noen andre nyttige hooks som du kan utforske i Hooks Reference. Det fantastiske er at du også kan definere dine egne kroker. I det følgende eksemplet har vi opprettet en egendefinert react-krok kalt useDebounce. Den brukes til å begrense API-anrop for autofullføring når inndatateksten endres.

import { useEffect } fra 'react';
import { debounce } fra 'lodash';
export default function useDebounce( fn, delay = 500 ) {
const debounced = useMemoOne( () => debounce( fn, delay ), [
fn,
delay,
] );
useEffect( () => () => debounced.cancel(), [ debounced ] );
return debounced;
}
export default function SearchComponent()
const fetchAutoComplete = useDebounce((e) => {
      // Hent API (valgfritt)
}, 1000) // 1 sec

return (

{...}
)
}

I tillegg er React-hooks en flott erstatning for Higher-Order Components (HoCs). Styled Component Styled Component er et bibliotek som gjør det mulig å innføre dynamisk CSS på komponentnivå, samtidig som man drar nytte av ES. Det gjør komponentene dine mer forutsigbare og gjenbrukbare. Du slipper å kaste bort tid på å lete etter det rette klassenavnet for et element samtidig som du prøver å unngå å bruke et eksisterende navn. Med Styled Components sørger du for at stilene dine er knyttet til komponenten og automatisk genererte klassenavn i byggetrinnet. I tillegg har det aldri vært enklere å lage dynamisk CSS. Stilene dine genereres i henhold til rekvisitter som sendes til komponenten. I eksempelet nedenfor er div-stilen både avhengig av den skisserte rekvisitten og det globale temaet.

const Wrapper = styled.div`

  border: ${props => props.outlined ? '1px solid' : 'none'};

    background: ${props => props.theme.light ? 'black' : 'white'}

Det siste poenget med stylede komponenter er at det forbedrer ytelsen ved å ikke laste inn unødvendige stiler for ubrukte komponenter. Slot Fill Library La oss si at du har definert en layout for react-appen din, og så vil du legge til en widget i sidefeltet bare for en bestemt side. Hvis du ikke har tenkt på dette fra begynnelsen av, kan det kreve en stor endring av oppsettet. Men ved å bruke et bibliotek som ‣ kan du bare definere et spor i sidefeltet. På den måten unngår du å sende flagg langs hele komponenttreet for å få tilgang til sidefeltet. Det har lignende oppførsel som React Portals, som også er en flott løsning for tilfeller som Modals, Tooltips ...

import { Slot, Fill, Provider } fra 'react-slot-fill';
const Sidebar = (rekvisitter) =>
 
export default Toolbar;
Sidebar.Item = (rekvisitter) => (props)

{ props.label }
const Widget = () => [
[

];
const Page = ({barn}) => [ ]; const Page = ({barn}) => [ ]

{barn}

const HomePage = () => {hjemmeside

en side uten Widjet
const DashboardPage = () => en side uten Widjet

en side med Widjet

Higher-Order Components Selv om React hooks erstatter HOCs i de fleste tilfeller. HoCs er fortsatt et godt valg når det gjelder å skjule kompleksitet fra komponenter som å gi flere rekvisitter til sidekomponenter eller betinget gjengivelse (private ruter, lastestatus ...) Følgende eksempel illustrerer hvordan vi kan innkapsle kompleksiteten til både private ruter og felles siderekvisitter i gjenbrukbare HoCs som brukes på alle applikasjonssider. Husk at de fleste HoCs kan erstattes av React Hooks, og at vi ved en feiltakelse kan overstyre rekvisitter ved å komponere HoCs. Så bruk HoCs bare når det er nødvendig for å holde sidekomponentene renere, ellers bruker du React Hooks.

function withPrivateRoute(Component) {
...
return function PrivateRoute(props) {
if (!userConnected) return ;
return ;
};
}
function withPageProps(Component) {
...
return function privateRoute(props) {
return ;
};
}
function ProfilePage({ navigation, currentPath, currentUser}) {
return
Profilside
}
export default withPrivateRoute(withPageProps(ProfilePage))

Feilgrenser Feilgrenser er klassekomponenter som fanger opp alle feil/unntak som oppstår på barnivå. Når de er deklarert på toppnivå, kan du utføre riktig feilhåndtering ved å vise en feilmelding og logge feilen i et plattformovervåkingsverktøy som Sentry. På denne måten vil du være den første som oppdager feil og prøver å fikse dem før de påvirker brukeropplevelsen. Merk: ErrorBoundaries bør deklareres i klassen de ikke støtter funksjonelle komponenter.

class ErrorBoundary utvides React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
statisk getDerivedStateFromError(error) {
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
logErrorToMySentry(error, errorInfo);
}
render() {
if (this.state.hasError) {
return
Noe gikk galt! Kontakt administrator
;
}
return this.props.children;

}
}

Relaterte artikler

Programvareutvikling

Javascript-verktøy i aksjon

Oppdag noen JavaScript-verktøy som kan hjelpe deg med å forbedre programmeringen. Lær mer om ESLint, Prettier og Husky!

The Codest
Reda Salmi React Utvikler
Løsninger for bedrifter og oppskalering

10 Dubai-selskaper det er verdt å følge med på i 2020

Dubai er hjertet i De forente arabiske emirater, med et stadig mer fremgangsrikt marked av globale selskaper og lovende oppstartsbedrifter. Mange kan skryte av internasjonal suksess og bemerkelsesverdige produkter....

Tuna Pinar

Abonner på vår kunnskapsbase og hold deg oppdatert på ekspertisen fra IT-sektoren.

    Om oss

    The Codest - Internasjonalt programvareutviklingsselskap med teknologisentre i Polen.

    Storbritannia - Hovedkvarter

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale teknologisentre

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      The Codest

    • Hjem
    • Om oss
    • Tjenester
    • Casestudier
    • Vet hvordan
    • Karriere
    • Ordbok

      Tjenester

    • Det rådgivende
    • Programvareutvikling
    • Backend-utvikling
    • Frontend-utvikling
    • Staff Augmentation
    • Backend-utviklere
    • Ingeniører i skyen
    • Dataingeniører
    • Annet
    • QA-ingeniører

      Ressurser

    • Fakta og myter om samarbeid med en ekstern programvareutviklingspartner
    • Fra USA til Europa: Hvorfor velger amerikanske oppstartsbedrifter å flytte til Europa?
    • Sammenligning av Tech Offshore Development Hubs: Tech Offshore Europa (Polen), ASEAN (Filippinene), Eurasia (Tyrkia)
    • Hva er de største utfordringene for CTO-er og CIO-er?
    • The Codest
    • The Codest
    • The Codest
    • Retningslinjer for personver
    • Vilkår for bruk av nettstedet

    Opphavsrett © 2025 av The Codest. Alle rettigheter forbeholdt.

    nb_NONorwegian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek nb_NONorwegian