Heim > Web-Frontend > js-Tutorial > Hauptteil

React-Grundlagen Teil 2

DDD
Freigeben: 2024-09-19 06:27:06
Original
779 Leute haben es durchsucht

React Basics Part 2

Hier sind einige fortgeschrittenere React-Konzepte und -Terminologien:

12. Kontext-API

Die Kontext-API bietet eine Möglichkeit, Daten durch den Komponentenbaum zu leiten, ohne Requisiten auf jeder Ebene manuell übergeben zu müssen. Es ist nützlich für globale Daten wie Themen, Authentifizierung oder Benutzerdaten.

Beispiel:

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

function ThemedButton() {
  return (
    <ThemeContext.Consumer>
      {theme => <button className={theme}>I am styled by {theme} theme!</button>}
    </ThemeContext.Consumer>
  );
}

function App() {
  return (
    <ThemeContext.Provider value="dark">
      <ThemedButton />
    </ThemeContext.Provider>
  );
}
Nach dem Login kopieren

13. Refs

Refs bieten eine Möglichkeit, auf DOM-Knoten oder React-Elemente zuzugreifen, die in der Render-Methode erstellt wurden. Es wird oft verwendet, um ein DOM-Element direkt zu ändern oder den Fokus zu verwalten.

Beispiel:

import { useRef } from 'react';

function TextInputWithFocusButton() {
  const inputEl = useRef(null);

  const onButtonClick = () => {
    inputEl.current.focus();
  };

  return (
    <div>
      <input ref={inputEl} type="text" />
      <button onClick={onButtonClick}>Focus the input</button>
    </div>
  );
}
Nach dem Login kopieren

14. Komponente höherer Ordnung (HOC)

Ein HOC ist eine Funktion, die eine Komponente übernimmt und eine neue Komponente zurückgibt. Es wird oft verwendet, um Komponentenlogik wiederzuverwenden.

Beispiel:

function withLogger(WrappedComponent) {
  return function WithLogger(props) {
    console.log('Rendering component');
    return <WrappedComponent {...props} />;
  };
}

const EnhancedComponent = withLogger(MyComponent);
Nach dem Login kopieren

15. React.memo

React.memo ist eine Komponente höherer Ordnung, die durch das Auswendiglernen einer Komponente zur Leistungsoptimierung beiträgt. Wenn sich die Requisiten nicht geändert haben, überspringt die Komponente das erneute Rendern.

Beispiel:

const MyComponent = React.memo(function MyComponent(props) {
  return <div>{props.text}</div>;
});

Nach dem Login kopieren

16. Verwenden Sie den Reduzierhaken

Der useReducer-Hook ist eine Alternative zu useState. Dies ist nützlich für die Verwaltung komplexerer Zustandslogik, insbesondere wenn der Zustand von vorherigen Werten abhängt.

Beispiel:

import { useReducer } from 'react';

function reducer(state, action) {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      throw new Error();
  }
}

function Counter() {
  const [state, dispatch] = useReducer(reducer, { count: 0 });

  return (
    <div>
      <button onClick={() => dispatch({ type: 'decrement' })}>-</button>
      <span>{state.count}</span>
      <button onClick={() => dispatch({ type: 'increment' })}>+</button>
    </div>
  );
}
Nach dem Login kopieren

17. Fragmente reagieren

Mit React Fragments können Sie eine Liste von untergeordneten Elementen gruppieren, ohne dem DOM zusätzliche Knoten hinzuzufügen.

Beispiel:

function Table() {
  return (
    <>
      <tr>
        <td>Row 1</td>
      </tr>
      <tr>
        <td>Row 2</td>
      </tr>
    </>
  );
}

Nach dem Login kopieren

18. Portale

Portale bieten eine Möglichkeit, untergeordnete Elemente in einem DOM-Knoten darzustellen, der außerhalb der Hierarchie der übergeordneten Komponente existiert.

Beispiel:

import ReactDOM from 'react-dom';

function Modal({ children }) {
  return ReactDOM.createPortal(
    <div className="modal">{children}</div>,
    document.getElementById('modal-root')
  );
}

Nach dem Login kopieren

19. Fehlergrenzen

Fehlergrenzen sind React-Komponenten, die JavaScript-Fehler an einer beliebigen Stelle in ihrem untergeordneten Komponentenbaum abfangen, diese Fehler protokollieren und eine Fallback-Benutzeroberfläche anzeigen.

Beispiel:

class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error) {
    return { hasError: true };
  }

  render() {
    if (this.state.hasError) {
      return <h1>Something went wrong.</h1>;
    }

    return this.props.children;
  }
}
Nach dem Login kopieren

20. Lazy Loading

React unterstützt das verzögerte Laden von Komponenten, was bedeutet, dass Komponenten bei Bedarf asynchron geladen werden können, was die Leistung großer Anwendungen verbessert.

Beispiel:

import React, { Suspense } from 'react';

const OtherComponent = React.lazy(() => import('./OtherComponent'));

function MyComponent() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <OtherComponent />
    </Suspense>
  );
}

Nach dem Login kopieren

21. StrictMode

StrictMode ist ein Tool zum Hervorheben potenzieller Probleme in einer Anwendung. Es stellt keine sichtbare Benutzeroberfläche dar, prüft jedoch auf Probleme wie veraltete Lebenszyklusmethoden.

Beispiel:

function App() {
  return (
    <React.StrictMode>
      <MyComponent />
    </React.StrictMode>
  );
}

Nach dem Login kopieren

22. Kontrollierte vs. unkontrollierte Komponenten

Kontrollierte Komponenten: Formularelemente, bei denen der Wert durch den Reaktionszustand gesteuert wird.

Unkontrollierte Komponenten: Formularelemente, bei denen der Wert vom DOM verarbeitet wird.

Example of Controlled Component:

function ControlledInput() {
  const [value, setValue] = useState('');

  return (
    <input
      type="text"
      value={value}
      onChange={(e) => setValue(e.target.value)}
    />
  );
}

Example of Uncontrolled Component:

function UncontrolledInput() {
  const inputRef = useRef(null);

  return <input type="text" ref={inputRef} />;
}
Nach dem Login kopieren

23. Propellerbohren

Prop Drilling tritt auf, wenn Daten über mehrere Ebenen von Komponenten weitergegeben werden, um ein tief verschachteltes untergeordnetes Element zu erreichen. Dies kann durch die Verwendung der Kontext-API oder von Statusverwaltungsbibliotheken vermieden werden.

Example of Prop Drilling:

function Grandparent() {
  const name = "John";
  return <Parent name={name} />;
}

function Parent({ name }) {
  return <Child name={name} />;
}

function Child({ name }) {
  return <p>{name}</p>;
}
Nach dem Login kopieren

24. Rendering-Lebenszyklus

React-Komponenten haben einen Lebenszyklus mit Methoden, die in verschiedenen Phasen aufgerufen werden, z. B. beim Mounten, Aktualisieren und Unmounten.

Lebenszyklusmethoden (Klassenkomponenten):

  1. - ComponentDidMount
  2. - ComponentDidUpdate
  3. - ComponentWillUnmount

Beispiel:

class MyComponent extends React.Component {
  componentDidMount() {
    console.log('Component mounted');
  }

  componentDidUpdate() {
    console.log('Component updated');
  }

  componentWillUnmount() {
    console.log('Component will unmount');
  }

  render() {
    return <div>Hello!</div>;
  }
}

Nach dem Login kopieren

25. useRef Hook

Der useRef-Hook wird verwendet, um Werte über mehrere Renderings hinweg beizubehalten, ohne ein erneutes Rendering zu verursachen. Es wird häufig für den Zugriff auf DOM-Elemente oder das Speichern veränderlicher Werte verwendet.

Beispiel:

function Timer() {
  const countRef = useRef(0);

  useEffect(() => {
    const intervalId = setInterval(() => {
      countRef.current += 1;
      console.log(countRef.current);
    }, 1000);

    return () => clearInterval(intervalId);
  }, []);

  return <p>Check the console to see the timer.</p>;
}
Nach dem Login kopieren

Diese zusätzlichen Konzepte werden Ihnen helfen, Ihr Verständnis von React zu vertiefen und komplexere Szenarien zu bewältigen!

Das obige ist der detaillierte Inhalt vonReact-Grundlagen Teil 2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!