0

React Performance Optimization: UseMemo és useCallback használata valós idejű példában

Share
  • February 22, 2023

Bevezetés:

A React nagy teljesítményéről ismert, de az alkalmazás növekedésével teljesítményproblémák léphetnek fel. A teljesítmény javításának egyik módja a memoizációs technikák, például használja a Memo-t és használja a visszahívást. Ebben a blogbejegyzésben megvizsgáljuk, hogyan használhatjuk a useMemo és a useCallback funkciókat a Counter összetevőben a teljesítmény javítása érdekében.

Egyszerű számlálókomponens a Reactban:

Tekintsünk egy egyszerű Számláló komponenst, amely növeli a számlálót, ha egy gombra kattintanak. A Számláló komponensnek van egy gyermekkomponense is, amely megjeleníti az aktuális számlálást.

import React, { useState } from 'react';
import DisplayCount from './DisplayCount';

function Counter() {
  const [count, setCount] = useState(0);

  const increment = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <button onClick={increment}>Increment</button>
      <DisplayCount count={count} />
    </div>
  );
}

export default Counter;

Az újrarendereléssel kapcsolatos probléma: Ebben az összetevőben a növekmény függvény minden meghívásakor a számláló állapota frissül, és a teljes Számláló komponens újra megjelenik, beleértve a gyermek DisplayCount összetevőt is. Ez szükségtelen újramegjelenítéseket okozhat, és ronthatja a teljesítményt.

Íme a megoldás az újramegjelenítés leállítására:

Reagáljon useMemo és használjon visszahívási horgot
Reagáljon UseCallback és UseMemo Hook

A useMemo és a useCallback használata: A gyermek DisplayCount komponens szükségtelen újramegjelenítésének elkerülése érdekében használhatjuk a useMemo vagy a useCallback függvényt. Vizsgáljuk meg, hogyan valósíthatjuk meg mindkét technikát a Counter komponenshez.

A useMemo használata:

import React, { useState, useMemo } from 'react';
import DisplayCount from './DisplayCount';

function Counter() {
  const [count, setCount] = useState(0);

  const increment = () => {
    setCount(count + 1);
  };

  const memoizedCount = useMemo(() => count, [count]);

  return (
    <div>
      <button onClick={increment}>Increment</button>
      <DisplayCount count={memoizedCount} />
    </div>
  );
}

export default Counter;

Ebben a példában a useMemo-t használjuk a számérték memorizálására. A useMemo második argumentuma a függőségek tömbje. Ebben az esetben az egyetlen függőség a számlálási érték, így a memoizedCount érték csak akkor frissül, ha a számlálási érték megváltozik.

A useCallback használata:

import React, { useState, useCallback } from 'react';
import DisplayCount from './DisplayCount';

function Counter() {
  const [count, setCount] = useState(0);

  const increment = useCallback(() => {
    setCount(count + 1);
  }, [count]);

  return (
    <div>
      <button onClick={increment}>Increment</button>
      <DisplayCount count={count} />
    </div>
  );
}

export default Counter;

Ebben a példában a useCallback funkciót használjuk a növekmény függvény memorizálására. A useCallback második argumentuma szintén függőségek tömbje. Ebben az esetben az egyetlen függőség a számlálási érték, így a növekedési függvény csak akkor jön létre újra, ha a számlálási érték megváltozik.

A useMemo és a useCallback használatának előnyei:

Mindkét esetben a gyermek DisplayCount komponens csak akkor jelenik meg újra, ha a számlálási érték megváltozik, megelőzve a szükségtelen újrarendereléseket és javítva a teljesítményt. Ezen memoizációs technikák használatával javíthatja React alkalmazásának teljesítményét.

Következtetés:

Összefoglalva, a useMemo és a useCallback hatékony memográfiai technikák, amelyek segíthetnek optimalizálni React alkalmazásai teljesítményét. Ha olyan összetevőkben használja őket, mint a Számláló összetevő, megakadályozhatja a szükségtelen újramegjelenítéseket, és javíthatja az alkalmazás általános teljesítményét.


#React #Performance #Optimization #UseMemo #és #useCallback #használata #valós #idejű #példában