Tahap arkitek: Kaedah Kitar Hayat dan Cangkuk dalam Reaksi

WBOY
Lepaskan: 2024-07-17 18:06:53
asal
349 orang telah melayarinya

Architect level: Lifecycle Methods and Hooks in React

Sebagai pembangun peringkat arkitek, anda bertanggungjawab untuk memastikan aplikasi anda teguh, boleh diselenggara dan berskala. Menguasai React Hooks dan kaedah kitaran hayat adalah penting untuk mencapai matlamat ini. Artikel ini merangkumi cangkuk penting, cangkuk tersuai dan corak cangkuk lanjutan, seperti mengurus keadaan kompleks dengan useReducer dan mengoptimumkan prestasi dengan useMemo dan useCallback.

Pengenalan kepada React Hooks

React Hooks, yang diperkenalkan dalam React 16.8, membolehkan komponen berfungsi menggunakan keadaan dan ciri React yang lain. Cangkuk menyediakan pendekatan berfungsi dan modular untuk mengendalikan logik komponen, yang membawa kepada pangkalan kod yang lebih bersih dan boleh diselenggara.

Faedah Utama Cangkuk

  1. Kod Lebih Bersih: Cangkuk menghapuskan keperluan untuk komponen kelas, menjadikan pangkalan kod lebih konsisten dan lebih mudah difahami.
  2. Kebolehgunaan semula: Cangkuk tersuai membenarkan pengekstrakan dan penggunaan semula logik stateful merentas berbilang komponen.
  3. Modulariti: Cangkuk menyediakan API yang mudah untuk mengurus keadaan komponen dan kesan sampingan, mempromosikan kod modular dan boleh diselenggara.

Cangkuk Penting

useState

useState ialah cangkuk yang membolehkan anda menambah keadaan pada komponen berfungsi.

Contoh:

import React, { useState } from 'react';

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

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>Click me</button>
    </div>
  );
};

export default Counter;
Salin selepas log masuk

Dalam contoh ini, useState memulakan pembolehubah keadaan kiraan kepada 0. Fungsi setCount mengemas kini keadaan apabila butang diklik.

useEffect

useEffect ialah cangkuk yang membolehkan anda melakukan kesan sampingan dalam komponen berfungsi, seperti mengambil data, berinteraksi secara langsung dengan DOM dan menyediakan langganan. Ia menggabungkan kefungsian beberapa kaedah kitaran hayat dalam komponen kelas (componentDidMount, componentDidUpdate dan componentWillUnmount).

Contoh:

import React, { useState, useEffect } from 'react';

const DataFetcher = () => {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => setData(data));
  }, []);

  return (
    <div>
      {data ? <pre class="brush:php;toolbar:false">{JSON.stringify(data, null, 2)}
: 'Loading...'}
); }; export default DataFetcher;
Salin selepas log masuk

Dalam contoh ini, useEffect mengambil data daripada API apabila komponen dipasang.

gunakanKonteks

useContext ialah cangkuk yang membolehkan anda mengakses nilai konteks untuk konteks tertentu.

Contoh:

import React, { useContext } from 'react';

const ThemeContext = React.createContext('light');

const ThemedComponent = () => {
  const theme = useContext(ThemeContext);

  return <div>The current theme is {theme}</div>;
};

export default ThemedComponent;
Salin selepas log masuk

Dalam contoh ini, useContext mengakses nilai semasa ThemeContext.

useReducer

useReducer ialah cangkuk yang membolehkan anda mengurus logik keadaan kompleks dalam komponen berfungsi. Ia adalah alternatif untuk menggunakanState dan amat berguna apabila logik keadaan melibatkan berbilang sub-nilai atau apabila keadaan seterusnya bergantung pada yang sebelumnya.

Contoh:

import React, { useReducer } from 'react';

const initialState = { count: 0 };

const reducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      return state;
  }
};

const Counter = () => {
  const [state, dispatch] = useReducer(reducer, initialState);

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
    </div>
  );
};

export default Counter;
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, useReducer mengurus keadaan kiraan dengan fungsi pengurang.

Cangkuk Tersuai

Cakuk tersuai membolehkan anda menggunakan semula logik stateful merentas berbilang komponen. Cangkuk tersuai ialah fungsi yang menggunakan cangkuk terbina dalam.

Contoh:

import { useState, useEffect } from 'react';

const useFetch = (url) => {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch(url)
      .then(response => response.json())
      .then(data => setData(data));
  }, [url]);

  return data;
};

const DataFetcher = ({ url }) => {
  const data = useFetch(url);

  return (
    <div>
      {data ? <pre class="brush:php;toolbar:false">{JSON.stringify(data, null, 2)}
: 'Loading...'}
); }; export default DataFetcher;
Salin selepas log masuk

Dalam contoh ini, useFetch ialah cangkuk tersuai yang mengambil data daripada URL yang diberikan.

Corak Cangkuk Lanjutan

Menguruskan Keadaan Kompleks dengan useReducer

Apabila berurusan dengan logik keadaan kompleks yang melibatkan berbilang sub-nilai atau apabila keadaan seterusnya bergantung pada yang sebelumnya, useReducer boleh menjadi lebih sesuai daripada useState.

Contoh:

import React, { useReducer } from 'react';

const initialState = { count: 0 };

const reducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      return state;
  }
};

const Counter = () => {
  const [state, dispatch] = useReducer(reducer, initialState);

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
    </div>
  );
};

export default Counter;
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, useReducer mengurus keadaan kiraan dengan fungsi pengurang.

Mengoptimumkan Prestasi dengan useMemo dan useCallback

gunakanMemo

useMemo ialah cangkuk yang menghafal nilai yang dikira, mengiranya semula hanya apabila salah satu kebergantungan berubah. Ia membantu mengoptimumkan prestasi dengan menghalang pengiraan mahal pada setiap paparan.

Contoh:

import React, { useState, useMemo } from 'react';

const ExpensiveCalculation = ({ number }) => {
  const computeFactorial = (n) => {
    console.log('Computing factorial...');
    return n <= 1 ? 1 : n * computeFactorial(n - 1);
  };

  const factorial = useMemo(() => computeFactorial(number), [number]);

  return <div>Factorial of {number} is {factorial}</div>;
};

const App = () => {
  const [number, setNumber] = useState(5);

  return (
    <div>
      <input
        type="number"
        value={number}
        onChange={(e) => setNumber(parseInt(e.target.value, 10))}
      />
      <ExpensiveCalculation number={number} />
    </div>
  );
};

export default App;
Salin selepas log masuk

Dalam contoh ini, useMemo memastikan bahawa pengiraan faktorial hanya dikira semula apabila nombor berubah.

gunakanPanggil balik

useCallback ialah cangkuk yang menghafal fungsi, menghalang rekreasinya pada setiap pemaparan melainkan salah satu kebergantungannya berubah. Ia berguna untuk menghantar fungsi stabil kepada komponen kanak-kanak yang bergantung pada kesamaan rujukan.

Contoh:

import React, { useState, useCallback } from 'react';

const Button = React.memo(({ onClick, children }) => {
  console.log(`Rendering button - ${children}`);
  return <button onClick={onClick}>{children}</button>;
});

const App = () => {
  const [count, setCount] = useState(0);

  const increment = useCallback(() => setCount((c) => c + 1), []);

  return (
    <div>
      <Button onClick={increment}>Increment</Button>
      <p>Count: {count}</p>
    </div>
  );
};

export default App;
Salin selepas log masuk

Dalam contoh ini, useCallback memastikan bahawa fungsi kenaikan hanya dicipta semula jika kebergantungannya berubah, menghalang pemaparan semula komponen Butang yang tidak perlu.

Kesimpulan

Menguasai React Hooks dan kaedah kitaran hayat adalah penting untuk membina aplikasi yang teguh, boleh diselenggara dan berskala. Dengan memahami dan menggunakan cangkuk seperti useState, useEffect, useContext dan useReducer, serta corak lanjutan seperti cangkuk tersuai dan pengoptimuman prestasi dengan useMemo dan useCallback, anda boleh mencipta aplikasi React yang cekap dan berskala. Sebagai pembangun peringkat arkitek, kemahiran ini akan meningkatkan keupayaan anda dengan ketara untuk mereka bentuk dan membimbing pembangunan aplikasi React berkualiti tinggi, memastikan amalan terbaik dan standard tinggi dikekalkan sepanjang proses pembangunan.

Atas ialah kandungan terperinci Tahap arkitek: Kaedah Kitar Hayat dan Cangkuk dalam Reaksi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Artikel sebelumnya:Axios Vs Fetch: Mana Yang Perlu Anda Gunakan Untuk Permintaan HTTP Anda? Artikel seterusnya:Petua Pintasan jQuery yang berguna untuk Pengekodan yang Cekap
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
Artikel terbaru oleh pengarang
Isu terkini
Topik-topik yang berkaitan
Lagi>
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan