Hoppa till huvudinnehåll

10 inlägg taggade med "react"

Inlägg om React

Visa alla taggar

Skillnaden mellan useState och useMemo

· En minut att läsa
Filip Tammergård
Programmerare på Frilans Finans

Titeln på det här inlägget kan verka löjlig. Självklart är useState och useMemo olika.

Men i ett avseende är de ganska lika.

Betrakta det här exemplet:

const [state] = useState(() => {
return calculateSomething(input)
})

const memo = useMemo(() => {
return calculateSomething(input)
}, [input])

Bygga en generisk tabell i React och TypeScript

· 4 min att läsa
Filip Tammergård
Programmerare på Frilans Finans

Jag vill ta med dig på en resa där vi skapar en tabellkomponent som är generisk och statiskt typad. I stället för att bara visa ett slutresultat vill jag testa olika tillvägagångssätt som har olika fallgropar och hitta den lösning som verkar bäst.

Som utgångspunkt vill vi rendera en tabell med några landdata:

CountryCapitalDate formatInternet TLD
SwedenStockholmYYYY-MM-DD.se
GermanyBerlinDD.MM.YYYY.de
BrazilBrasíliaDD/MM/YYYY.br

Custom hook: useClipboard

· En minut att läsa
Filip Tammergård
Programmerare på Frilans Finans

För ett tag sedan skrev jag ett blogginlägg om hur man får tillgång till clipboarden med navigator-API:t. Jag bestämde mig för att göra det till en custom hook för att det skulle bli superlätt att använda. Innan vi går in i koden – klicka på knappen för att läsa din clipboard:

Nothing to show...

Pi-decimaler

· En minut att läsa
Filip Tammergård
Programmerare på Frilans Finans

Hur många decimaler av pi kan du? Här kan du testa dig och försöka bli bättre! Klicka på rutan nedan och skriv första decimalen för att börja. Om du vill ha hjälp kan du klicka på "Visa facit"-knappen där du även ser hur långt du har kommit genom att de korrekt angivna decimalerna har grön bakgrund.

Discogenerator

· 3 min att läsa
Filip Tammergård
Programmerare på Frilans Finans

Nu blir det fredagsdisco!

TL;DR

  • Varje ruta i en grid får en slumpmässig rgb(...)-färg, och custom-hooken useInterval sätter om alla färger vid varje takt.
  • Frekvensen i hertz översätts till intervallets delay som 1000 / frequency; under 1 Hz skickas null in och discot pausas.
  • CSS grid-layouten och varje rutas färg sätts med inline-stilar, som passar värden som ändras vid varje rendering bättre än CSS-klasser.

Custom hook: useInterval

· 4 min att läsa
Filip Tammergård
Programmerare på Frilans Finans

setInterval kör en callback i ett bestämt intervall. Att använda funktionen i React innebär att man måste komma ihåg att anropa clearInterval vid unmount och dra in extra state varje gång intervallet ska pausas eller startas om. Det här inlägget paketerar båda delarna i en liten custom hook som jag kallar useInterval.

TL;DR

  • useEffect startar intervallet och returnerar en cleanup som anropar clearInterval – ingen manuell unmount-hantering.
  • Den senaste callbacken hålls i en ref, så intervallet fortsätter ticka i jämn takt även när komponenten renderar om av orelaterade skäl.
  • Att skicka in null som delay pausar intervallet, så det går att härleda "körs nu" direkt från props eller state utan en separat flagga.
  • När delay ändras startas intervallet om automatiskt, så ett dynamiskt värde "bara funkar".

Vad har jag kopierat?

· 3 min att läsa
Filip Tammergård
Programmerare på Frilans Finans

Har du någonsin kopierat något och direkt glömt vad det var?

TL;DR

  • navigator.clipboard.readText() returnerar ett Promise<string> med clipboardens nuvarande text.
  • Funktionen är bara tillgänglig i en säker kontext (HTTPS eller localhost), och läsningen måste ske under en användarinteraktion – därför är den kopplad till ett knappklick i stället för att köras vid sidladdning.
  • Anropet kan kasta fel (nekad behörighet, dokumentet saknar fokus, ingen clipboard tillgänglig …) så det hör alltid hemma i ett try/catch.

Bokstavsspel

· 4 min att läsa
Filip Tammergård
Programmerare på Frilans Finans

Starta spelet genom att klicka på rutan och skriva bokstaven som visas. Då börjar tiden gå och du får en ny slumpmässig bokstav att skriva så snabbt som möjligt. Varje rätt följs av en ny slumpmässig bokstav och om du skriver fel tar spelet slut. Kör hårt!

TL;DR

  • Ett litet snabbskrivningsspel byggt i React med TypeScript.
  • useReducer håller spelets state samlat, med läget som idle eller running.
  • useEffect läser in sparat rekord från local storage och slumpar fram första bokstaven vid mount.
  • En egen useInterval-hook driver klockan.