Heim Web-Frontend js-Tutorial So erhalten Sie Daten in React

So erhalten Sie Daten in React

Nov 16, 2020 am 11:07 AM
react 获取数据

Methoden zum Abrufen von Daten in React: 1. Verwenden Sie Lebenszyklusmethoden, um Daten anzufordern. 2. Verwenden Sie Hooks, um Daten abzurufen. 3. Verwenden Sie Suspense, um Daten abzurufen.

So erhalten Sie Daten in React

Die Betriebsumgebung dieses Tutorials: Windows10-System, React16, dieser Artikel gilt für alle Computermarken.

Methoden zum Abrufen von Daten:

1. Verwenden Sie die Lebenszyklusmethode, um Daten anzufordern.

Die Anwendung Employees.org führt zwei Dinge aus:

1. Erhalten Sie 20 Mitarbeiter, sobald Sie das Programm betreten .

2. Sie können Mitarbeiter nach Filterbedingungen filtern.

Bevor wir diese beiden Anforderungen implementieren, schauen wir uns die beiden Lebenszyklusmethoden von Reaktionsklassenkomponenten an:

  • componentDidMount(): wird ausgeführt, nachdem die Komponente gemountet wurdecomponentDidMount():组件挂载后执行

  • componentDidUpdate(prevProps):当 props 或 state 改变时执行

组件 <EmployeesPage>使用上面两个生命周期方法实现获取逻辑:

import EmployeesList from "./EmployeesList";
import { fetchEmployees } from "./fake-fetch";
class EmployeesPage extends Component {
  constructor(props) {
    super(props);
    this.state = { employees: [], isFetching: true };
  }
  componentDidMount() {
    this.fetch();
  }
  componentDidUpdate(prevProps) {
    if (prevProps.query !== this.props.query) {
      this.fetch();
    }
  }
  async fetch() {
    this.setState({ isFetching: true });
    const employees = await fetchEmployees(this.props.query);
    this.setState({ employees, isFetching: false });
  }
  render() {
    const { isFetching, employees } = this.state;
    if (isFetching) {
      return <div>获取员工数据中...</div>;
    }
    return <EmployeesList employees={employees} />;
  }
}
Nach dem Login kopieren

打开codesandbox可以查看<EmployeesPage>获取过程。

<EmployeesPage>有一个获取数据的异步方法fetch()。在获取请求完成后,使用 setState 方法来更新employees。

this.fetch()componentDidMount()生命周期方法中执行:它在组件初始渲染时获取员工数据。

当咱们关键字进行过滤时,将更新 props.query 。每当 props.query 更新,componentDidUpdate()就会重新执行this.fetch()。

虽然生命周期方法相对容易掌握,但是基于类的方法存在样板代码使重用性变得困难。

优点

这种方法很容易理解:componentDidMount()在第一次渲染时获取数据,而componentDidUpdate()在props更新时重新获取数据。

缺点

样板代码

基于类的组件需要继承React.Component,在构造函数中执行 super(props) 等等。

this:使用 this 关键字很麻烦。

代码重复

componentDidMount()componentDidUpdate()中的代码大部分是重复的。

很难重用

员工获取逻辑很难在另一个组件中重用。

2.使用 Hooks 获取数据

Hooks 是基于类获取数据方式更好的选择。作为简单的函数,Hooks 不像类组件那样还要继承,并且也更容易重用。

简单回忆一下useEffect(callback[, deps]) Hook。这个hook在挂载后执行callback ,并且当依赖项deps发生变化时重新渲染。

如下示例所示,在<EmployeesPage>中使用useEffect()获取员工数据:

import EmployeesList from "./EmployeesList";
import { fetchEmployees } from "./fake-fetch";
function EmployeesPage({ query }) {
  const [isFetching, setFetching] = useState(false);
  const [employees, setEmployees] = useState([]);
  useEffect(function fetch() {
    (async function() {
      setFetching(true);
      setEmployees(await fetchEmployees(query));
      setFetching(false);
    })();
  }, [query]);
  
  if (isFetching) {
    return <div>Fetching employees....</div>;
  }
  return <EmployeesList employees={employees} />;
}
Nach dem Login kopieren

打开codesandbox可以查看useEffect()如何获取数据。

可以看到使用 Hooks 的 <EmployeesPage>比使用类组件方式简单了很多。

在<EmployeesPage>函数组件中的useEffect(fetch, [query]),初始渲染之后执行fetch回调。此外,当依赖项 query更新时也会重新执行 fetch 方法。

但仍有优化的空间。Hooks 允许咱们从<EmployeesPage>组件中提取雇员获取逻辑,来看看:

import React, { useState } from &#39;react&#39;;
import EmployeesList from "./EmployeesList";
import { fetchEmployees } from "./fake-fetch";
function useEmployeesFetch(query) { // 这行有变化
  const [isFetching, setFetching] = useState(false);
  const [employees, setEmployees] = useState([]);
  useEffect(function fetch {
    (async function() {
      setFetching(true);
      setEmployees(await fetchEmployees(query));
      setFetching(false);
    })();
  }, [query]);
  return [isFetching, employees];
}
function EmployeesPage({ query }) {
  const [employees, isFetching] = useEmployeesFetch(query); // 这行有变化
  
  if (isFetching) {
    return <div>Fetching employees....</div>;
  }
  return <EmployeesList employees={employees} />;
}
Nach dem Login kopieren

useEmployeesFetch()提到所需要的值。组件<EmployeesPage>没有相应的获取逻辑,只负责渲染界面工作。

更好的是,可以在需要获取雇员的任何其他组件中重用useEmployeesFetch()。

优点

  • 清楚和简单,Hooks没有样板代码,因为它们是普通的函数。

  • 可重用性,在 Hooks 中实现的获取数据逻辑很容易重用。

缺点

需要前置知识

Hooks 有点违反直觉,因此在使用之前必须理解它们,Hooks 依赖于闭包,所以一定要很好地了解它们。

必要性

使用Hooks,仍然必须使用命令式方法来执行数据获取。

佛山vi设计https://www.houdianzi.com/fsvi/ 豌豆资源搜索大全https://55wd.com

3.使用 suspense 获取数据

Suspense 提供了一种声明性方法来异步获取React中的数据。

注意:截至2019年11月,Suspense 处于试验阶段。

<Suspense>包装执行异步操作的组件:

<Suspense fallback={<span>Fetch in progress...</span>}>
  <FetchSomething />
</Suspense>
Nach dem Login kopieren

数据获取时,Suspense将显示fallback中的内容,当获取完数据后,Suspense将使用获取到数据渲染<FetchSomething />

来看看怎么使用Suspense:

import React, { Suspense } from "react";
import EmployeesList from "./EmployeesList";
function EmployeesPage({ resource }) {
  return (
    <Suspense fallback={<h1>Fetching employees....</h1>}>
      <EmployeesFetch resource={resource} />
    </Suspense>
  );
}
function EmployeesFetch({ resource }) {
  const employees = resource.employees.read();
  return <EmployeesList employees={employees} />;
}
Nach dem Login kopieren

打开codesandbox可以查看Suspense如何获取数据。

<EmployeesPage>使用Suspense处理组件将获取到数据传递给<EmployeesFetch>

🎜componentDidUpdate(prevProps): Wird ausgeführt, wenn sich Requisiten oder Status ändern. 🎜 Sehen Sie sich den <EmployeesPage>-Akquiseprozess an. 🎜🎜<EmployeesPage> verfügt über eine asynchrone Methode fetch() zum Abrufen von Daten. Nachdem die Get-Anfrage abgeschlossen ist, verwenden Sie die setState-Methode, um die Mitarbeiter zu aktualisieren. 🎜🎜this.fetch() wird in der Lebenszyklusmethode componentDidMount() ausgeführt: Es ruft die Mitarbeiterdaten ab, wenn die Komponente zum ersten Mal gerendert wird. 🎜🎜Wenn unsere Schlüsselwörter gefiltert werden, wird props.query aktualisiert. Immer wenn props.query aktualisiert wird, führt ComponentDidUpdate() this.fetch() erneut aus. 🎜🎜Während Lebenszyklusmethoden relativ einfach zu beherrschen sind, erschwert der bei klassenbasierten Methoden vorhandene Boilerplate-Code die Wiederverwendbarkeit. 🎜🎜🎜Vorteile🎜🎜🎜Diese Methode ist leicht zu verstehen: componentDidMount() ruft die Daten beim ersten Rendern ab, während componentDidUpdate() sie erneut abruft, wenn Requisiten vorhanden sind aktualisierte Daten. 🎜🎜🎜Nachteile🎜🎜🎜Boilerplate-Code🎜🎜Klassenbasierte Komponenten müssen React.Component erben, super(props) im Konstruktor ausführen usw. 🎜🎜dies: Die Verwendung dieses Schlüsselworts ist problematisch. 🎜🎜Codeduplizierung🎜🎜Der größte Teil des Codes in componentDidMount() und componentDidUpdate() wird wiederholt. 🎜🎜Schwierig wiederzuverwenden🎜🎜Logik zur Mitarbeiterakquise lässt sich nur schwer in einer anderen Komponente wiederverwenden. 🎜🎜 🎜🎜🎜2. Verwenden Sie Hooks, um Daten abzurufen. 🎜🎜🎜Hooks ist eine bessere Wahl, um Daten basierend auf Klassen zu erhalten. Als einfache Funktionen müssen Hooks nicht wie Klassenkomponenten vererbt werden und sind einfacher wiederzuverwenden. 🎜🎜Erinnern Sie sich kurz an den Hook useEffect(callback[, deps]). Dieser Hook führt den Rückruf nach dem Mounten aus und rendert erneut, wenn sich die Abhängigkeitsabhängigkeiten ändern. 🎜🎜Wie im folgenden Beispiel gezeigt, wird useEffect() verwendet, um Mitarbeiterdaten in <EmployeesPage> abzurufen: 🎜rrreee🎜Öffnen Sie codesandbox, um zu sehen, wie useEffect() Daten abruft. 🎜🎜Sie sehen, dass die Verwendung von Hooks' <EmployeesPage> viel einfacher ist als die Verwendung von Klassenkomponenten. 🎜🎜In useEffect(fetch, [query]) in der <EmployeesPage>-Funktionskomponente wird der Fetch-Callback nach dem ersten Rendern ausgeführt. Darüber hinaus wird die Abrufmethode auch erneut ausgeführt, wenn die Abhängigkeitsabfrage aktualisiert wird. 🎜🎜Aber es gibt noch Raum für Optimierungen. Mit Hooks können wir die Mitarbeiterabruflogik aus der <EmployeesPage>-Komponente extrahieren. Werfen wir einen Blick darauf: 🎜rrreee🎜 erwähnt die erforderlichen Werte aus useEmployeesFetch(). Die Komponente <EmployeesPage> verfügt über keine entsprechende Erfassungslogik und ist nur für die Darstellung der Schnittstelle verantwortlich. 🎜🎜 Noch besser: useEmployeesFetch() kann in jeder anderen Komponente wiederverwendet werden, die Mitarbeiter abrufen muss. 🎜🎜🎜Vorteile🎜🎜🎜🎜🎜Klar und einfach: Hooks haben keinen Boilerplate-Code, da es sich um gewöhnliche Funktionen handelt. 🎜🎜🎜Wiederverwendbarkeit: Die in Hooks implementierte Datenerfassungslogik ist einfach wiederzuverwenden. 🎜🎜🎜Nachteile🎜🎜🎜Erfordert Vorkenntnisse🎜🎜Haken sind etwas kontraintuitiv, daher müssen Sie sie verstehen, bevor Sie sie verwenden. Haken basieren auf Verschlüssen, also stellen Sie sicher, dass Sie sie gut verstehen. 🎜🎜🎜Notwendigkeit🎜🎜🎜Bei Hooks müssen Sie immer noch einen zwingenden Ansatz verwenden, um den Datenabruf durchzuführen. 🎜🎜Foshan vi design https://www.houdianzi.com/fsvi/ Pea-Ressourcensuchverzeichnis https://55wd.com🎜🎜🎜3. Verwenden Sie Suspense, um Daten abzurufen. 🎜🎜🎜Suspense bietet einen deklarativen Ansatz zum asynchronen Abrufen von Daten in Reagieren. 🎜🎜Hinweis: Seit November 2019 befindet sich Suspense in der experimentellen Phase. 🎜🎜<Suspense> Paketiert Komponenten, die asynchrone Vorgänge ausführen: 🎜rrreee🎜Wenn Daten abgerufen werden, zeigt Suspense den Inhalt im Fallback an. Wenn die Daten abgerufen werden, verwendet Suspense die abgerufenen Daten render <FetchSomething />. 🎜🎜Sehen wir uns an, wie Suspense verwendet wird: 🎜rrreee🎜Öffnen Sie Codesandbox, um zu sehen, wie Suspense Daten erhält. 🎜🎜<EmployeesPage> verwendet die Suspense-Verarbeitungskomponente, um die erhaltenen Daten an die Komponente <EmployeesFetch> zu übergeben. 🎜Das

in resource.employees<EmployeesFetch> ist ein speziell verpacktes Versprechen, das hinter den Kulissen mit Suspense kommuniziert. Auf diese Weise weiß Suspense, wie lange es dauern wird, das Rendern von <EmployeesFetch> anzuhalten, und kann mit dem Rendern der Arbeit beginnen, wenn die Ressource bereit ist.

Der größte Vorteil ist: Suspense verarbeitet asynchrone Vorgänge deklarativ und synchron. Komponenten verfügen nicht über eine komplexe Datenabruflogik, sondern nutzen Ressourcen auf deklarative Weise zum Rendern von Inhalten. Es gibt keinen Lebenszyklus innerhalb der Komponente, keine Hooks, Async/Warten, keine Rückrufe: nur die Anzeigeschnittstelle.

Vorteile

Deklarativ

Suspense Führen Sie asynchrone Vorgänge in React deklarativ aus.

Einfach

Deklarativer Code ist einfach zu verwenden, diese Komponenten verfügen über keine komplexe Datenabruflogik.

Lose Kopplung und Abrufimplementierung

Komponenten, die Suspense verwenden, sehen nicht, wie Daten abgerufen werden: Verwenden Sie REST oder GraphQL. Suspense legt eine Grenze fest, um zu verhindern, dass Abrufdetails in die Komponente gelangen.

Standardstatus

Wenn mehrere Get-Vorgänge angefordert werden, verwendet Suspense die neueste Get-Anfrage.

4. Zusammenfassung

Lebenszyklusmethoden waren lange Zeit die einzige Lösung für die Datenbeschaffung. Deren Verwendung zum Abrufen von Daten bringt jedoch viele Probleme mit dem Standardcode, der Duplizierung und der Wiederverwendbarkeit mit sich.

Verwandte kostenlose Lernempfehlungen: JavaScript (Video)

Das obige ist der detaillierte Inhalt vonSo erhalten Sie Daten in React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie eine Echtzeit-Chat-App mit React und WebSocket So erstellen Sie eine Echtzeit-Chat-App mit React und WebSocket Sep 26, 2023 pm 07:46 PM

So erstellen Sie eine Echtzeit-Chat-Anwendung mit React und WebSocket Einführung: Mit der rasanten Entwicklung des Internets hat die Echtzeitkommunikation immer mehr Aufmerksamkeit auf sich gezogen. Live-Chat-Apps sind aus dem modernen Sozial- und Arbeitsleben nicht mehr wegzudenken. In diesem Artikel wird erläutert, wie Sie mit React und WebSocket eine einfache Echtzeit-Chat-Anwendung erstellen, und es werden spezifische Codebeispiele bereitgestellt. 1. Technische Vorbereitung Bevor wir mit der Erstellung einer Echtzeit-Chat-Anwendung beginnen, müssen wir die folgenden Technologien und Tools vorbereiten: React: eine zum Erstellen

Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Sep 28, 2023 am 10:48 AM

React-Leitfaden zur Front-End- und Back-End-Trennung: So erreichen Sie die Front-End- und Back-End-Entkopplung und die unabhängige Bereitstellung. Es sind spezifische Codebeispiele erforderlich. In der heutigen Webentwicklungsumgebung ist die Front-End- und Back-End-Trennung zu einem Trend geworden. Durch die Trennung von Front-End- und Back-End-Code kann die Entwicklungsarbeit flexibler und effizienter gestaltet und die Zusammenarbeit im Team erleichtert werden. In diesem Artikel wird erläutert, wie Sie mithilfe von React eine Front-End- und Back-End-Trennung erreichen und so die Ziele der Entkopplung und unabhängigen Bereitstellung erreichen. Zuerst müssen wir verstehen, was Front-End- und Back-End-Trennung ist. Im traditionellen Webentwicklungsmodell sind Front-End und Back-End gekoppelt

So erstellen Sie einfache und benutzerfreundliche Webanwendungen mit React und Flask So erstellen Sie einfache und benutzerfreundliche Webanwendungen mit React und Flask Sep 27, 2023 am 11:09 AM

So erstellen Sie mit React und Flask einfache und benutzerfreundliche Webanwendungen. Einführung: Mit der Entwicklung des Internets werden die Anforderungen an Webanwendungen immer vielfältiger und komplexer. Um den Anforderungen der Benutzer an Benutzerfreundlichkeit und Leistung gerecht zu werden, wird es immer wichtiger, moderne Technologie-Stacks zum Aufbau von Netzwerkanwendungen zu verwenden. React und Flask sind zwei sehr beliebte Frameworks für die Front-End- und Back-End-Entwicklung, und sie arbeiten gut zusammen, um einfache und benutzerfreundliche Webanwendungen zu erstellen. In diesem Artikel erfahren Sie, wie Sie React und Flask nutzen

So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ Sep 28, 2023 pm 08:24 PM

So erstellen Sie eine zuverlässige Messaging-Anwendung mit React und RabbitMQ Einführung: Moderne Anwendungen müssen zuverlässiges Messaging unterstützen, um Funktionen wie Echtzeitaktualisierungen und Datensynchronisierung zu erreichen. React ist eine beliebte JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen, während RabbitMQ eine zuverlässige Messaging-Middleware ist. In diesem Artikel wird erläutert, wie Sie React und RabbitMQ kombinieren, um eine zuverlässige Messaging-Anwendung zu erstellen, und es werden spezifische Codebeispiele bereitgestellt. RabbitMQ-Übersicht:

Anleitung zum Debuggen von React-Code: So finden und beheben Sie Front-End-Fehler schnell Anleitung zum Debuggen von React-Code: So finden und beheben Sie Front-End-Fehler schnell Sep 26, 2023 pm 02:25 PM

React-Code-Debugging-Leitfaden: So finden und beheben Sie Front-End-Fehler schnell. Einführung: Bei der Entwicklung von React-Anwendungen stoßen Sie häufig auf eine Vielzahl von Fehlern, die zum Absturz der Anwendung oder zu fehlerhaftem Verhalten führen können. Daher ist die Beherrschung von Debugging-Fähigkeiten eine wesentliche Fähigkeit für jeden React-Entwickler. In diesem Artikel werden einige praktische Techniken zum Auffinden und Beheben von Front-End-Fehlern vorgestellt und spezifische Codebeispiele bereitgestellt, um Lesern dabei zu helfen, Fehler in React-Anwendungen schnell zu finden und zu beheben. 1. Auswahl der Debugging-Tools: In Re

So erstellen Sie eine schnelle Datenanalyseanwendung mit React und Google BigQuery So erstellen Sie eine schnelle Datenanalyseanwendung mit React und Google BigQuery Sep 26, 2023 pm 06:12 PM

So verwenden Sie React und Google BigQuery zum Erstellen schneller Datenanalyseanwendungen. Einführung: Im heutigen Zeitalter der Informationsexplosion ist die Datenanalyse zu einem unverzichtbaren Bindeglied in verschiedenen Branchen geworden. Unter anderem ist die Entwicklung schneller und effizienter Datenanalyseanwendungen für viele Unternehmen und Einzelpersonen zum Ziel geworden. In diesem Artikel wird erläutert, wie Sie mit React und Google BigQuery eine schnelle Datenanalyseanwendung erstellen, und es werden detaillierte Codebeispiele bereitgestellt. 1. Übersicht React ist ein Werkzeug zum Erstellen

Leitfaden für reaktionsfähiges Design: So erzielen Sie adaptive Front-End-Layouteffekte Leitfaden für reaktionsfähiges Design: So erzielen Sie adaptive Front-End-Layouteffekte Sep 26, 2023 am 11:34 AM

React Responsive Design Guide: So erzielen Sie adaptive Front-End-Layouteffekte Mit der Beliebtheit mobiler Geräte und der steigenden Nachfrage der Benutzer nach Multi-Screen-Erlebnissen ist Responsive Design zu einem der wichtigsten Aspekte in der modernen Front-End-Entwicklung geworden. React, eines der derzeit beliebtesten Frontend-Frameworks, bietet eine Fülle von Tools und Komponenten, die Entwicklern dabei helfen, adaptive Layouteffekte zu erzielen. In diesem Artikel werden einige Richtlinien und Tipps zur Implementierung von responsivem Design mit React vorgestellt und spezifische Codebeispiele als Referenz bereitgestellt. Fle mit React

React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Sep 29, 2023 pm 05:45 PM

ReactRouter-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Mit der Popularität von Single-Page-Anwendungen ist das Front-End-Routing zu einem wichtigen Bestandteil geworden, der nicht ignoriert werden kann. Als beliebteste Routing-Bibliothek im React-Ökosystem bietet ReactRouter umfangreiche Funktionen und benutzerfreundliche APIs, wodurch die Implementierung des Front-End-Routings sehr einfach und flexibel ist. In diesem Artikel wird die Verwendung von ReactRouter vorgestellt und einige spezifische Codebeispiele bereitgestellt. Um ReactRouter zuerst zu installieren, benötigen wir

See all articles