Heim > Web-Frontend > js-Tutorial > Detaillierte Erläuterung der Kontext-API von React 16.3

Detaillierte Erläuterung der Kontext-API von React 16.3

小云云
Freigeben: 2018-02-08 14:35:06
Original
2637 Leute haben es durchsucht

React hat in Version 16.3-alpha eine neue Kontext-API eingeführt, und die Community freut sich darauf. Lassen Sie uns zunächst anhand eines einfachen Beispiels sehen, wie die neue Kontext-API aussieht, und dann kurz die Bedeutung der neuen API besprechen.

Sie müssen die 16.3-alpha-Version von React installieren. Die Konstruktionsschritte stehen nicht im Mittelpunkt dieses Artikels. Dieser Artikel teilt Ihnen hauptsächlich die detaillierte Erklärung der Kontext-API von React 16.3 mit.

npm install react@next react-dom@next
Nach dem Login kopieren

Schauen wir uns den Code direkt an. Wenn Sie react-redux schon einmal verwendet haben, sollte er Ihnen bekannt vorkommen.

Erstellen Sie zunächst die context-Instanz:

import React from 'react';
import ReactDOM from 'react-dom';

// 创建context实例
const ThemeContext = React.createContext({
  background: 'red',
  color: 'white'
});
Nach dem Login kopieren

Definieren Sie dann die App-Komponente. Beachten Sie, dass hier die Provider-Komponente verwendet wird, ähnlich wie die react-redux Bestandteil von Provider.

class App extends React.Component {

  render () {
    return (
      <ThemeContext.Provider value={{background: &#39;green&#39;, color: &#39;white&#39;}}>
        <Header />
       </ThemeContext.Provider>
    );
  }
}
Nach dem Login kopieren

Als nächstes definieren Sie die Komponenten Header und Title. Hinweis: Die

  1. Title-Komponente verwendet die Consumer-Komponente, was bedeutet, dass sie die von Provider übergebenen Daten verbrauchen möchte. Die

  2. Title-Komponente ist die App-Komponente von , die Header-Verbrauchsdaten werden jedoch übersprungen.

class Header extends React.Component {
  render () {
    return (
      <Title>Hello React Context API</Title>
    );
  }
}

class Title extends React.Component {
  render () {
    return (
      <ThemeContext.Consumer>
        {context => (
          <h1 style={{background: context.background, color: context.color}}>
            {this.props.children}
          </h1>
        )}
      </ThemeContext.Consumer>
    );
  }
}
Nach dem Login kopieren

Endlich der normale Betrieb

ReactDOM.render(
  <App />, 
  document.getElementById('container')
);
Nach dem Login kopieren

Sehen Sie sich die Ergebnisse der Programmausführung an:

Detaillierte Erläuterung der Kontext-API von React 16.3

Warum gibt es eine neue Kontext-API?

Studenten, die redux + react-redux verwendet haben, dürften mit der neuen Kontext-API sehr vertraut sein. Studierende, die den Quellcode von react-redux gelesen haben, wissen, dass react-redux selbst auf der Grundlage der alten Version der Kontext-API implementiert ist.

Warum gibt es eine neue Kontext-API, da es bereits Lösungen gibt?

  1. Es gibt bestimmte Probleme bei der Implementierung der vorhandenen Kontext-API: Wenn beispielsweise die shouldComponentUpdate Leistung der übergeordneten Komponente optimiert ist, kann dies dazu führen, dass die untergeordneten Komponenten, die Kontextdaten nutzen, dies nicht tun aktualisiert werden.

  2. Reduzierung der Komplexität: Lösungen wie Redux Family Bucket führen zu einem gewissen Grad an Komplexität in das Projekt, insbesondere Studenten, die nicht genug über die Lösung wissen, können Probleme möglicherweise nicht lösen. Die Einführung der neuen Kontext-API kann die Abhängigkeit vieler Projekte vom Redux-Familien-Bucket bis zu einem gewissen Grad verringern.

Hinten geschrieben

Die neue Kontext-API, ich persönlich freue mich auf die Leistungsverbesserung. Was die Reduzierung der Komplexität und den Ersatz von Redux angeht, liegt mein Fokus nicht darauf. Der nächste Plan besteht darin, Vergleichstests mit mehreren Anwendungsfällen für Konstruktionspunkte durchzuführen.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Kontext-API von React 16.3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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