Pourquoi React utilise-t-il des composants spéciaux pour afficher les listes ?

WBOY
Libérer: 2022-05-05 10:47:01
original
1950 Les gens l'ont consulté

Parce que lorsque React rend de grandes collections de données, le coordinateur doit évaluer les composants générés par chaque collection modifiée, ce qui est très inefficace. L'utilisation de composants spécialisés pour restituer des listes peut améliorer les performances de rendu de grandes collections de données, et aucun autre composant n'est rendu.

Pourquoi React utilise-t-il des composants spéciaux pour afficher les listes ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, React version 17.0.1, ordinateur Dell G3.

Pourquoi React utilise des composants dédiés pour restituer des listes

Render les listes dans des composants dédiés

Ceci est particulièrement important lors du rendu de grandes collections de données. React fonctionne très mal lors du rendu de grandes collections de données, car le coordinateur doit évaluer les composants résultants pour chaque collection changeante. Par conséquent, il est recommandé d'utiliser un composant dédié pour mapper la collection (tableau) et restituer ce composant, et de ne jamais restituer d'autres composants :

Mauvais :

class MyComponent extends Component {
    render() {
        const {todos, user} = this.props;
        return (<div>
            {user.name}
            <ul>
                {todos.map(todo => <TodoView todo={todo} key={todo.id} />)}
            </ul>
        </div>)
    }
}
Copier après la connexion

Dans l'exemple ci-dessus, lorsque user.name change, React sera inutile Coordonnez tous les composants TodoView. Bien que le composant TodoView ne soit pas restitué, le processus de coordination lui-même est très coûteux

Bon :

class MyComponent extends Component {
    render() {
        const {todos, user} = this.props;
        return (<div>
            {user.name}
            <TodosView todos={todos} />
        </div>)
    }
}
Copier après la connexion
class TodosView extends Component {
    render() {
        const {todos} = this.props;
        return <ul>
            {todos.map(todo => <TodoView todo={todo} key={todo.id} />)}
        </ul>)
    }
}
Copier après la connexion

Rendu de liste dans React

implémenté à l'aide de v-for dans Vue.js Rendu en boucle de. lister les éléments dans le modèle ;

Utilisez wx:for dans l'applet pour implémenter le rendu en boucle des éléments de la liste dans le modèle ;

Il n'y a pas de modèle dans React (c'est-à-dire qu'il n'y a pas besoin de v-for) ; système de commande (c’est-à-dire aucun mécanisme similaire).

Méthode 1 : parcours de boucle for

import React, { Component } from &#39;react&#39;
export default class App extends Component {
// 假设服务器端返回如下
state={books:[&#39;巴黎圣母院&#39;,&#39;悲惨世界&#39;,&#39;爱的教育&#39;,&#39;简·爱&#39;,&#39;钢铁是怎样炼成的&#39;,&#39;安徒生童话&#39;]}
booklist(){
// 把服务器端返回的字符串数组转换为JSX数组
let arr=[]
for(let i=0;i<this.state.books.length;i++){
arr.push( <li key={i}>《{this.state.books[i]}》</li> )
}
return arr
}
render() {
return (
<div>
<ul>
{this.booklist()}
</ul>
</div>
)
}
}
Copier après la connexion

Méthode 2 : Créer une fonction pour renvoyer le tableau JSX mappé

showList(){
return   this.state.list.map( (e,i)=>JSX )
}
{this.showList() }
Copier après la connexion
import React, { Component } from &#39;react&#39;
export default class App extends Component {
// 假设服务器端返回如下
state={books:[&#39;巴黎圣母院&#39;,&#39;悲惨世界&#39;,&#39;爱的教育&#39;,&#39;简·爱&#39;,&#39;钢铁是怎样炼成的&#39;,&#39;安徒生童话&#39;]}
booklist(){
// 把服务器端返回的字符串数组转换为JSX数组
return this.state.books.map( (b,i)=> <li key={i}>《{b}》</li> )
}
render() {
return (
<div>
<ul>
{this.booklist()}
</ul>
</div>
)
}
}
Copier après la connexion

Méthode 3 : lier directement le tableau JSX mappé

{
this.state.list.map( (e,i)=>JSX )
}
Copier après la connexion
import React, { Component } from &#39;react&#39;
export default class App extends Component {
// 假设服务器端返回如下
state={books:[&#39;巴黎圣母院&#39;,&#39;悲惨世界&#39;,&#39;爱的教育&#39;,&#39;简·爱&#39;,&#39;钢铁是怎样炼成的&#39;,&#39;安徒生童话&#39;]}
render() {
return (
<div>
<ul>
{/*this.booklist()*/}
{
/*此处不能急 编写for循环——for不是表达式*/
this.state.books.map( (b,i)=> <li key={i}>《{b}》</li> )
}
</ul>
</div>
)
}
}
Copier après la connexion

Les résultats des méthodes ci-dessus Ils sont tout de même, comme le montre l'image ci-dessous

Pourquoi React utilise-t-il des composants spéciaux pour afficher les listes ?

Apprentissage recommandé : "tutoriel vidéo React"

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