Rumah > hujung hadapan web > tutorial js > Asas React~Render Performance/ memo

Asas React~Render Performance/ memo

DDD
Lepaskan: 2024-10-14 16:35:31
asal
1072 orang telah melayarinya
  • Ini adalah corak yang komponen kanak-kanak akan dipecahkan .
  1. Apabila komponen induk dipaparkan semula, contohnya semasa mengemas kini keadaan dirinya sendiri atau lebih.

  2. Apabila prop komponen kanak-kanak dipaparkan semula.

Tetapi sebenarnya, ia hanya diperlukan apabila prop diberikan untuk memaparkan semula komponen anak. Semua yang lain tidak perlu.

・src/Example.js

mport React, { useState } from "react";
import Child from "./Child";
import "./Example.css";

const Example = () => {
  console.log("Parent render");
  const [countA, setCountA] = useState(0);
  const [countB, setCountB] = useState(0);
  return (
    <div className="parent">
      <div>
        <h3>Parent Component</h3>
        <div>
          <button
            onClick={() => {
              setCountA((pre) => pre + 1);
            }}
          >
            Button A
          </button>
          <span>Update the state of Parent Component</span>
        </div>
        <div>
          <button
            onClick={() => {
              setCountB((pre) => pre + 1);
            }}
          >
            Buton B
          </button>
          <span>Update the state of Child Component</span>
        </div>
      </div>
      <div>
        <p>The count of clicked:{countA}</p>
      </div>
      <Child countB={countB} />
    </div>
  );
};

export default Example;
Salin selepas log masuk

・src/Kanak-kanak .js

const Child = ({ countB }) => {
  console.log("%cChild render", "color: red;");

  return (
    <div className="child">
      <h2>Child component</h2>
      <span>The count of B button cliked:{countB}</span>
    </div>
  );
};

export default Child;

Salin selepas log masuk
  • Dalam kes ini, apabila kita menekan butang A (Komponen Induk), komponen anak dipaparkan. Walaupun ia tidak perlu.

・Seperti ini.
React Basics~Render Performance/ memo

・src/Child .js (menggunakan cangkuk memo)

import { memo } from "react";

function areEqual(prevProps, nextProps) {
  if (prevProps.countB !== nextProps.countB) {
    return false; // re-rendered
  } else {
    return true; // not-re-rendred
  }
}

const ChildMemo = memo(({ countB }) => {
  console.log("%cChild render", "color: red;");

  return (
    <div className="child">
      <h2>Child component</h2>
      <span>The count of B button cliked:{countB}</span>
    </div>
  );
}, areEqual);

export default ChildMemo;

Salin selepas log masuk
  • Jika kita menggunakan memo, kita boleh mengelakkan pemaparan semula yang tidak perlu.

・Seperti ini.
React Basics~Render Performance/ memo

Atas ialah kandungan terperinci Asas React~Render Performance/ memo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan