Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de l'API contextuelle de React 16.3

小云云
Libérer: 2018-02-08 14:35:06
original
2605 Les gens l'ont consulté

React a introduit une nouvelle API Contexte en version 16.3-alpha, et la communauté l'attend avec impatience. Utilisons d'abord un exemple simple pour voir à quoi ressemble la nouvelle API Contexte, puis discutons brièvement de la signification de la nouvelle API.

Vous devez installer la version 16.3-alpha de React. Les étapes de construction ne sont pas au centre de cet article. Cet article partage principalement avec vous l'explication détaillée de l'API Context de React 16.3. J'espère qu'elle pourra vous aider.

npm install react@next react-dom@next
Copier après la connexion

Regardons directement le code Si vous avez déjà utilisé react-redux, il devrait vous sembler familier.

Tout d'abord, créez l'instance context :

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

// 创建context实例
const ThemeContext = React.createContext({
  background: 'red',
  color: 'white'
});
Copier après la connexion

Ensuite, définissez le composant App Notez que le composant Provider est utilisé ici, similaire au react-redux. composant de Provider.

class App extends React.Component {

  render () {
    return (
      <ThemeContext.Provider value={{background: &#39;green&#39;, color: &#39;white&#39;}}>
        <Header />
       </ThemeContext.Provider>
    );
  }
}
Copier après la connexion

Ensuite, définissez les composants Header et Title. Remarque : Le composant

  1. Title utilise le composant Consumer, ce qui signifie qu'il souhaite consommer les données transmises par Provider. Le composant

  2. Title est le composant App de , mais les données de consommation Header sont ignorées.

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>
    );
  }
}
Copier après la connexion

Enfin, le fonctionnement normal

ReactDOM.render(
  <App />, 
  document.getElementById('container')
);
Copier après la connexion

Regardez les résultats du programme en cours d'exécution :

Explication détaillée de l'API contextuelle de React 16.3

Pourquoi y a-t-il une nouvelle API Context

Les étudiants qui ont utilisé redux + react-redux devraient trouver la nouvelle API Context très familière. Les étudiants qui ont lu le code source de react-redux sauront que react-redux lui-même est implémenté sur la base de l'ancienne version de l'API Context.

Puisqu’il existe déjà des solutions, pourquoi y a-t-il une nouvelle API Context ?

  1. Il existe certains problèmes dans la mise en œuvre de l'API Context existante : par exemple, lorsque les performances shouldComponentUpdate du composant parent sont optimisées, les composants enfants qui consomment les données de contexte peuvent ne pas à mettre à jour.

  2. Réduire la complexité : des solutions telles que Redux Family Bucket introduisent un certain degré de complexité dans le projet, en particulier les étudiants qui ne connaissent pas suffisamment la solution peuvent être incapables de résoudre les problèmes. L'introduction de la nouvelle API Context peut, dans une certaine mesure, réduire la dépendance de nombreux projets à l'égard du bucket de la famille Redux.

Écrit à la fin

La nouvelle API Context, j'attends personnellement avec impatience l'amélioration des performances. Quant à réduire la complexité et remplacer le redux, ce n'est pas mon objectif. Le prochain plan consiste à effectuer des tests comparatifs avec plusieurs cas d’utilisation de points de construction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal