国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Phase de montage
constructeur()
rendre()
ComponentDidMount ()
statique GetderivedStateFromprops ()
Phase de mise à jour
DevracomponentUpdate ()
getSnaphotbeForeupdate ()
ComponentDidupDate ()
Phase de désinstallation
Phase de gestion des erreurs
GetderivedStateFromError ()
ComponentDidCatch ()
Ceci est le cycle de vie des composants React!
Maison interface Web tutoriel CSS Le cercle d'un cycle de vie React

Le cercle d'un cycle de vie React

Apr 21, 2025 am 09:35 AM

Le cercle d'un cycle de vie React

Les composants React passent par différentes étapes du cycle de vie de leur application, bien que ce qui se passe dans les coulisses puisse ne pas être évident.

Ces étapes comprennent:

  • Monter
  • renouveler
  • désinstaller
  • Gestion des erreurs

Chaque étape a une méthode correspondante à laquelle des actions spécifiques peuvent être effectuées sur des composants. Par exemple, lors de la récupération des données du réseau, vous voudrez peut-être appeler une fonction qui gère les appels d'API dans componentDidMount() (disponible dans la phase de montage).

Comprendre différentes approches de cycle de vie est crucial pour le développement d'applications REACT, car elle nous permet de déclencher des opérations avec précision en cas de besoin sans être confondu avec d'autres opérations. Cet article couvrira chaque cycle de vie, y compris les méthodes disponibles et les types de scénarios que nous les utilisons.

Phase de montage

Considérez les montures comme le stade initial du cycle de vie des composants. Le composant n'existait pas avant que le support ne se produise - il a simplement traversé le DOM jusqu'à ce que le montage se produise et le connecte dans le cadre du document.

Une fois le composant monté, nous pouvons profiter de nombreuses méthodes: constructor() , render() , componentDidMount() et static getDerivedStateFromProps() . Chaque méthode a son propre objectif, jetons un coup d'?il dans l'ordre.

constructeur()

constructor() est requise lors de la définition des états directement sur le composant pour lier les méthodes ensemble. Cela ressemble à ceci:

 // Une fois que le composant d'entrée commence à monter ...
constructeur (accessoires) {
  // ... définir des accessoires ...
  super (accessoires);
  // ... Dans ce cas, c'est un nom d'utilisateur vide ...
  this.state = {
    nom d'utilisateur: ''
  };
  // ... puis lier une méthode qui gère l'entrée change ce.handleInputchange = this.handleInputchange.bind (this);
}

Il est important de savoir que constructor est la première méthode appelée lors de la création d'un composant. Le composant n'a pas été rendu (à venir bient?t), mais le DOM le sait déjà et nous pouvons le s'accrocher avant qu'il ne soit rendu. Ce n'est donc pas là que nous appelons setState() ou introduisons des effets secondaires, car le composant est toujours en phase de construction!

J'ai écrit un tutoriel sur Refs avant et une chose que j'ai remarquée, c'est que lorsque vous utilisez React.createRef() , vous pouvez définir Ref dans constructor . Ceci est raisonnable, car Refs est utilisé pour modifier les valeurs sans accessoires ou doit renvoyer le composant avec des valeurs mises à jour:

 constructeur (accessoires) {
  super (accessoires);
  this.state = {
    nom d'utilisateur: ''
  };
  this.inputText = react.crearef ();
}

rendre()

render() est l'endroit où la marque du composant s'affiche sur l'extrémité avant. L'utilisateur peut y voir et y accéder pour le moment. Si vous avez déjà créé un composant React, vous le connaissez déjà - même si vous ne le réalisez pas - car il nécessite des balises de sortie.

 L'application de classe étend React.
  // Pendant le processus de montage, veuillez rendre le contenu suivant!
  rendre() {
    Retour (
      <div>
        <p>Bonjour le monde!</p>
      </div>
    )
  }
}

Mais ce n'est pas tout le but de render() ! Il peut également être utilisé pour rendre les tableaux de composants:

 L'application de classe étend React.
  rendre () {
    Retour [
      <h2>Outils JavaScript</h2> ,
      <frontend></frontend>,
      <backend></backend>
    ]]
  }
}

Même des fragments de composants:

 L'application de classe étend React.
  rendre() {
    Retour (
      <react.fragment><p>Bonjour le monde!</p></react.fragment>
    )
  }
}

Nous pouvons également l'utiliser pour rendre des composants en dehors de la hiérarchie DOM (similaire au portail React):

 // Nous créons un portail qui permet aux composants de déplacer le portail de classe étend React.
  // Tout d'abord, nous créons un constructeur d'élément div () {
    super();
    this.el = document.CreateElement ("div");
  }

  // Après le mont, ajoutons l'élément enfant du composant composantdidmount = () => {
    Portalroot.ApendChild (this.el);
  };

  // Si le composant est supprimé du DOM, alors nous supprimons également son composant des éléments enfantswillunmount = () => {
    Portalroot.removechild (this.el);
  };

  // Ah, maintenant nous pouvons rendre le composant et ses éléments enfants rendent () selon les besoins {
    const {enfants} = this.props;
    Retour Reactdom.CreatePortal (enfants, this.el);
  }
}

Bien s?r, render() peut rendre des nombres et des cha?nes ...

 L'application de classe étend React.
  rendre () {
    Retour "Hello World!"
  }
}

Et valeurs nuls ou booléennes:

 L'application de classe étend React.
  rendre () {
    retourner null
  }
}

ComponentDidMount ()

Le nom componentDidMount() indique-t-il sa signification? Cette méthode est appelée une fois le composant monté (c'est-à-dire connecté au DOM). Dans un autre tutoriel, j'ai écrit sur l'obtention de données dans React, c'est là que vous souhaitez faire une demande à l'API pour obtenir des données.

Nous pouvons utiliser votre méthode de récupération:

 fetchusers () {
  Fetch (`https: // jsonplaceholder.typicode.com / utilisateur`)
    .Then (Response => Response.json ())
    .Then (data =>
      this.setstate ({
        utilisateurs: données,
        Isloading: False,
      })
    )
  .Catch (error => this.setState ({error, isLoading: false}));
}

Ensuite, appelez la méthode dans componentDidMount() Hook:

 composantdidmount () {
  this.fetchusers ();
}

Nous pouvons également ajouter des auditeurs d'événements:

 composantdidmount () {
  el.addeventListener ()
}

Très concis, non?

statique GetderivedStateFromprops ()

C'est un peu de nom verbeux, mais static getDerivedStateFromProps() n'est pas aussi compliqué qu'il y para?t. Il est appelé avant render() de la phase de montage et avant la phase de mise à jour. Il renvoie un objet pour mettre à jour l'état du composant, ou null s'il n'y a pas de contenu à mettre à jour.

Pour comprendre comment cela fonctionne, implémentons un composant de compteur qui définira une valeur spécifique pour son état de compteur. Ce statut ne sera mis à jour que lorsque la valeur de maxCount est plus élevée. maxCount sera passé du composant parent.

Ceci est le composant parent:

 L'application de classe étend React.
  constructeur (accessoires) {
    Super (accessoires)

    this.textInput = react.crearef ();
    this.state = {
      Valeur: 0
    }
  }

  handleIncrement = e => {
    E.PreventDefault ();
    this.setState ({valeur: this.state.value 1})
  };

  mandegredecment = e => {
    E.PreventDefault ();
    this.setState ({valeur: this.state.value - 1})
  };

  rendre() {
    Retour (
      <react.fragment><p>MAX COUNT: {this.state.value}</p>
           
          -
        <counter maxcount="{this.state.value}"></counter></react.fragment>
    )
  }
}

Nous avons un bouton pour augmenter la valeur de maxCount , que nous passons au composant Counter .

 Class Counter étend React.
  état = {
    Comptoir: 5
  }

  statique GetderivedStateFrombProps (NextProps, prevState) {
    if (prevState.counter <nextprops.maxcount return nextprops.maxcount retourner null rendre retour>
        <p>Count: {this.state.counter}</p>

      
    )
  }
}</nextprops.maxcount>

Dans le composant Counter , nous vérifions si counter est plus petit que maxCount . Si c'est le cas, nous définissons la counter de la valeur de maxCount . Sinon, nous ne faisons rien.

Phase de mise à jour

Une phase de mise à jour se produit lorsque les accessoires ou l'état du composant changent. Comme les montures, les mises à jour ont également leur propre ensemble de méthodes disponibles, que nous présenterons ensuite. Autrement dit, il convient de noter que render() et getDerivedStateFromProps() tirera également à ce stade.

DevracomponentUpdate ()

Lorsque l'état ou les accessoires du composant modifie, nous pouvons utiliser shouldComponentUpdate() pour contr?ler si le composant doit être mis à jour. Cette méthode est appelée avant le rendu se produit et lorsque l'état et les accessoires sont re?us. Le comportement par défaut est true . Pour renvoyer chaque fois que l'état ou les accessoires changent, nous faisons cela:

 devraComponentUpDate (nextProps, nextState) {
  renvoie this.state.value! == NextState.Value;
}

Lorsque false est renvoyé, le composant ne sera pas mis à jour, mais appelle plut?t render() pour afficher le composant.

getSnaphotbeForeupdate ()

Une chose que nous pouvons faire est de capturer l'état du composant à un moment donné, ce qui est con?u pour ce à quoi getSnapshotBeforeUpdate() est con?u. Il est appelé après render() mais avant de combler de nouvelles modifications au DOM. La valeur de retour est réalisée comme le troisième paramètre à componentDidUpdate() .

Il prend l'état et les accessoires précédents comme paramètres:

 getSnapshotBeforeupdate (prevprops, prevState) {
  // ...
}

à mon avis, il y a peu de cas d'utilisation pour cette approche. Il s'agit d'une méthode de cycle de vie que vous ne pouvez pas utiliser souvent.

ComponentDidupDate ()

Ajoutez componentDidUpdate() à la liste des méthodes, où le nom dit à peu près tout. Si le composant est mis à jour, nous pouvons utiliser cette méthode pour l'accrocher à ce moment et la transmettre aux accessoires et à l'état précédents du composant.

 ComponentDidupdate (prevprops, prevState) {
  if (prevstate.counter! == this.state.counter) {
    // ...
  }
}

Si vous avez déjà utilisé getSnapshotBeforeUpdate() , vous pouvez également transmettre la valeur de retour en tant que paramètre sur componentDidUpdate() :

 ComponentDidupDate (prevprops, prevState, snapshot) {
  if (prevstate.counter! == this.state.counter) {
    // ....
  }
}

Phase de désinstallation

Nous voyons presque l'opposé de la phase de montage ici. Comme vous pouvez vous y attendre, la désinstallation se produit lorsque le composant est effacé du DOM et n'est plus disponible.

Nous n'avons qu'une seule méthode ici: componentWillUnmount()

Ceci est appelé avant que le composant ne soit désinstallé et détruit. C'est là que nous voulons effectuer tout nettoyage nécessaire après le départ du composant, tel que la suppression des écouteurs d'événements qui pourraient être ajoutés dans componentDidMount() ou effacer l'abonnement.

 // Supprimer le composant de l'écouteur d'événementswillunmount () {
  el.removeeventListener ()
}

Phase de gestion des erreurs

Il peut y avoir des problèmes dans la composante, ce qui peut entra?ner des erreurs. Nous utilisons des limites d'erreur depuis un certain temps pour aider à résoudre ce problème. Ce composant limite d'erreur utilise certaines méthodes pour nous aider à gérer les erreurs possibles.

GetderivedStateFromError ()

Nous utilisons getDerivedStateFromError() pour attraper toutes les erreurs lancées du composant enfant, puis nous l'utilisons pour mettre à jour l'état du composant.

 Class Errorboundary étend React.

  constructeur (accessoires) {
    super (accessoires);
    this.state = {
      Haserror: Faux
    };
  }

  statique GetderivedStateFromError (erreur) {
    return {Haserror: true};
  }

  rendre() {
    if (this.state.haserror) {
      Retour (
        <h1>Oups, quelque chose s'est mal passé :(</h1>
      ));
    }

    Renvoyez ceci.props.children;
  }
}

Dans cet exemple, lorsqu'une erreur est jetée à partir du composant enfant, le composant ErrorBoundary affichera "oh, un problème s'est produit".

ComponentDidCatch ()

Bien que getDerivedStateFromError() convient à la mise à jour de l'état d'un composant en cas d'effets secondaires tels que la journalisation des erreurs, nous devons utiliser componentDidCatch() car il est appelé pendant la phase de validation, à laquelle le DOM a été mis à jour.

 ComponentDidCatch (erreur, info) {
  // Log des erreurs au service}

getDerivedStateFromError() et componentDidCatch() peuvent être utilisés dans le composant ErrorBoundary :

 Class Errorboundary étend React.

  constructeur (accessoires) {
    super (accessoires);
    this.state = {
      Haserror: Faux
    };
  }

  statique GetderivedStateFromError (erreur) {
    return {Haserror: true};
  }

  ComponentDidCatch (erreur, info) {
    // Log des erreurs au service}

  rendre() {
    if (this.state.haserror) {
      Retour (
        <h1>Oups, quelque chose s'est mal passé :(</h1>
      ));
    }

    Renvoyez ceci.props.children;
  }
}

Ceci est le cycle de vie des composants React!

C'est une chose cool de comprendre comment les composants réactifs interagissent avec DOM. Il est facile de penser que une "magie" se produira, puis quelque chose appara?tra sur la page. Mais le cycle de vie des composants React montre que cette folie est ordonnée, et elle vise à nous donner beaucoup de contr?le sur ce qui se passe à partir du moment où le composant atteint le Dom au moment où il dispara?t.

Nous couvrons beaucoup de choses dans un espace relativement court, mais j'espère que cela vous donne une bonne idée de la fa?on dont React gère les composants et des capacités que nous avons à chaque étape du traitement. Si vous n'êtes pas clair sur quoi que ce soit présenté ici, n'hésitez pas à poser des questions et j'aimerais faire de mon mieux pour vous aider!

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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Tutoriel CSS pour créer des filateurs et des animations de chargement Tutoriel CSS pour créer des filateurs et des animations de chargement Jul 07, 2025 am 12:07 AM

Il existe trois fa?ons de créer un rotateur de chargement CSS: 1. Utilisez le rotateur de base des frontières pour obtenir une animation simple via HTML et CSS; 2. Utilisez un rotateur personnalisé de plusieurs points pour atteindre l'effet de saut à travers différents temps de retard; 3. Ajoutez un rotateur dans le bouton et basculez les classes via JavaScript pour afficher l'état de chargement. Chaque approche souligne l'importance des détails de conception tels que la couleur, la taille, l'accessibilité et l'optimisation des performances pour améliorer l'expérience utilisateur.

ATTENTION DES PROBLèMES ET PRéFIXES DE COMPATIBILITé DE BROWSER CSS ATTENTION DES PROBLèMES ET PRéFIXES DE COMPATIBILITé DE BROWSER CSS Jul 07, 2025 am 01:44 AM

Pour faire face à la compatibilité du navigateur CSS et aux problèmes de préfixe, vous devez comprendre les différences de prise en charge du navigateur et utiliser raisonnablement les préfixes des fournisseurs. 1. Comprendre les problèmes communs tels que Flexbox et le support de la grille, Position: Sticky Invalid et les performances d'animation sont différentes; 2. Vérifier l'état du support de la fonction de confirmation de Caniuse; 3. Utilisez correctement -webkit-, -moz-, -ms-, -o- et autres préfixes du fabricant; 4. Il est recommandé d'utiliser AutopRefixer pour ajouter automatiquement les préfixes; 5. Installez PostCSS et configurez le navigateur pour spécifier le navigateur cible; 6. Gérer automatiquement la compatibilité pendant la construction; 7. Les fonctionnalités de détection modernizr peuvent être utilisées pour les anciens projets; 8. Pas besoin de poursuivre la cohérence de tous les navigateurs,

Quelle est la différence entre l'affichage: en ligne, affichage: bloc et affichage: bloc en ligne? Quelle est la différence entre l'affichage: en ligne, affichage: bloc et affichage: bloc en ligne? Jul 11, 2025 am 03:25 AM

HEMAINDIFFERENCESBetweendisplay: Inline, Block, Andinline-BlockInhtml / CSSareLayoutBehavior, SpaceUsage et StylingControl.1.InlineElementsflowWithText, Don'tStartNewLines, Ignorewidth / Height, AndonlyApplyhorizontalPadding / Marges - IdealForninetLetetStyLinSing

Styling visité les liens différemment avec CSS Styling visité les liens différemment avec CSS Jul 11, 2025 am 03:26 AM

La définition du style de liens que vous avez visité peut améliorer l'expérience utilisateur, en particulier dans les sites Web à forte intensité de contenu pour aider les utilisateurs à mieux naviguer. 1. Utilisez CSS: Pseudo-classe visité pour définir le style du lien visité, tels que les changements de couleur; 2. Notez que le navigateur permet uniquement la modification de certains attributs en raison des restrictions de confidentialité; 3. La sélection des couleurs doit être coordonnée avec le style global pour éviter la brutalité; 4. Le terminal mobile peut ne pas afficher cet effet et il est recommandé de le combiner avec d'autres invites visuelles telles que les logos auxiliaires ic?nes.

Création de formes personnalisées avec CSS Clip Path Création de formes personnalisées avec CSS Clip Path Jul 09, 2025 am 01:29 AM

Utilisez l'attribut Clip-Path de CSS pour recadrer des éléments en formes personnalisées, telles que les triangles, les encoches circulaires, les polygones, etc., sans compter sur des images ou des SVG. Ses avantages incluent: 1. Prend en charge une variété de formes de base telles que le cercle, l'ellipse, le polygone, etc.; 2. Ajustement réactif et adaptable aux terminaux mobiles; 3. Facile à l'animation, et peut être combiné avec le survol ou le javascript pour obtenir des effets dynamiques; 4. Il n'affecte pas le flux de disposition et ne culte que la zone d'affichage. Les usages communs sont tels que le chemin de clip circulaire: cercle (50pxatcenter) et trame de clip Triangle: polygone (50% 0%, 100 0%, 0 0%). Avis

Comment créer des images réactives à l'aide de CSS? Comment créer des images réactives à l'aide de CSS? Jul 15, 2025 am 01:10 AM

Pour créer des images réactives à l'aide de CSS, elle peut être principalement réalisée grace aux méthodes suivantes: 1. Utilisez la largeur maximale: 100% et hauteur: Auto pour permettre à l'image de s'adapter à la largeur du conteneur tout en maintenant la proportion; 2. Utilisez les attributs SRCSET et tailles de HTML pour charger intelligemment les sources d'image adaptées à différents écrans; 3. Utilisez l'objet-ajustement et la position d'objet pour contr?ler le recadrage d'images et l'affichage de la mise au point. Ensemble, ces méthodes garantissent que les images sont présentées clairement et magnifiquement sur différents appareils.

Démystifier les unités CSS: PX, EM, REM, VW, VH Comparaisons Démystifier les unités CSS: PX, EM, REM, VW, VH Comparaisons Jul 08, 2025 am 02:16 AM

Le choix des unités CSS dépend des exigences de conception et des exigences réactives. 1.PX est utilisé pour la taille fixe, adaptée à un contr?le précis mais au manque d'élasticité; 2.EM est une unité relative, qui est facilement causée par l'influence de l'élément parent, tandis que REM est plus stable en fonction de l'élément racine et convient à la mise à l'échelle globale; 3.VW / VH est basé sur la taille de la fenêtre, adaptée à la conception réactive, mais l'attention doit être accordée aux performances sous des écrans extrêmes; 4. Lors du choix, il doit être déterminé en fonction de la question de savoir si les ajustements réactifs, les relations de hiérarchie d'éléments et la dépendance de la fenêtre. Une utilisation raisonnable peut améliorer la flexibilité et la maintenance de la disposition.

Quelles sont les incohérences courantes du navigateur CSS? Quelles sont les incohérences courantes du navigateur CSS? Jul 26, 2025 am 07:04 AM

Différents navigateurs ont des différences dans l'analyse CSS, ce qui entra?ne des effets d'affichage incohérents, y compris principalement la différence de style par défaut, la méthode de calcul du modèle de bo?te, le niveau de support Flexbox et la disposition de la grille et le comportement incohérent de certains attributs CSS. 1. Le traitement de style par défaut est incohérent. La solution consiste à utiliser cssreset ou normaliser.css pour unifier le style initial; 2. La méthode de calcul du modèle de bo?te de l'ancienne version de IE est différente. Il est recommandé d'utiliser la taille d'une bo?te: Border-Box de manière unifiée; 3. Flexbox et Grid fonctionnent différemment dans les cas de bord ou dans les anciennes versions. Plus de tests et utilisent Autoprefixer; 4. Certains comportements d'attribut CSS sont incohérents. Caniuse doit être consulté et rétrogradé.

See all articles