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

Les étapes correctes pour encapsuler des composants personnalisés dans React

王林
Libérer: 2020-12-30 09:12:36
avant
2957 Les gens l'ont consulté

Les étapes correctes pour encapsuler des composants personnalisés dans React

Fond de l'article :

Dans les projets réels, afin d'éviter d'écrire du code en double et de faciliter la maintenance ultérieure, nous pouvons personnaliser l'empaquetage du même style de code dans un composant, puis appelez simplement le composant personnalisé sur la page.

(Partage vidéo d'apprentissage : tutoriel vidéo javascript)

Jetons un coup d'œil aux étapes spécifiques :

1. Encapsulons d'abord le composant personnalisé<.>

1), créez un nouveau dossier CardList

2), créez un nouveau fichier index.js dans le dossier CardList, et écrivez le code suivant dans le fichier index.js :

//index.js暴露组件CardList
import Card from &#39;./card&#39;;
import CardList from &#39;./cardList&#39;;
 
CardList.Card = Card;
export default CardList;
Copier après la connexion

3). Créez un nouveau fichier cardList.js dans le dossier CardList, et écrivez le code suivant sous le fichier :

import { Component } from &#39;react&#39;;
import withRouter from &#39;umi/withRouter&#39;;
import style from &#39;./index.css&#39;;
 
/**
 * CardList组件内容
 * @param title 组件标题
 * @param extra 描述
 * @param children 内容
 * @param restProps 传入的自定义属性
 * @returns {*}
 * @constructor
 */
const CardList = ({title, extra, children, ...restProps})=>{
  return(
    <div>
      <div className={style.card2} {...restProps}>
        <nav>{title} <span className={style.details}>{extra}</span></nav>
        {React.Children.map(
          children,
          child => (child ? React.cloneElement(child, {  }) : child)
        )}
      </div>
    </div>
  )
}
export default CardList;
Copier après la connexion

4). Créez un nouveau fichier index.css dans le dossier CardList, et écrivez dans le fichier Style

.card2{
  height: auto;
  background-color: white;
  padding: 16px;
  border-bottom: 1px solid #ddd;
}
.card2 nav{
  color: red;
  text-align: left;
  font-family: &#39;Arial Normal&#39;, &#39;Arial&#39;;
  font-weight: 400;
  font-style: normal;
  font-size: 16px;
  color: #333333;
  margin-bottom: 0.2rem;
}
.card2 div{
  color: #999999;
  font-family: &#39;Arial Normal&#39;, &#39;Arial&#39;;
  font-weight: 400;
  font-style: normal;
  font-size: 14px;
}
.list1{
  text-align: left;
  display: flex;
}
.list1>span{
  /*width: 50%;*/
  display: inline-block;
  vertical-align: top;
  /*white-space:nowrap;*/
  /*overflow:hidden;*/
  /*text-overflow : ellipsis;*/
  flex: 1;
}
 
.details{
  float: right;
  color:#2DA9FA;
}
Copier après la connexion

5), créez un nouveau fichier card.js dans le dossier CardList, et écrivez le code suivant sous le fichier :

import { Component } from &#39;react&#39;;
import withRouter from &#39;umi/withRouter&#39;;
import style from &#39;./index.css&#39;;
 
/**
 * 子组件内容
 * @param title 标题
 * @param children 内容
 * @param restProps 传入的自定义属性
 * @returns {*}
 * @constructor
 */
const Card = ({title,children,...restProps})=>{
  return(
    <div>
      <div className={style.list1} {...restProps}>
        <span>{title} {children}</span>
      </div>
    </div>
  )
}
export default Card;
Copier après la connexion

6), l'utilisation est la suivante suit :

import { Component } from &#39;react&#39;;
import withRouter from &#39;umi/withRouter&#39;;
import router from &#39;umi/router&#39;;
import CardList from &#39;./CardList/index&#39;;
const {Card} = CardList;
 
class Index extends Component{
    state ={
        loading:false,
        totalList:[{"trainCount":2360,"stationName":"北京"},{"trainCount":152,"stationName":"北京东"},{"trainCount":4248,"stationName":"北京南"},{"trainCount":3336,"stationName":"北京西"},{"trainCount":56,"stationName":"通州"}],
     }
 
    render() {
        let info = <div>
                       {
                           this.state.totalList.map((obj,index)=>{
                               return <CardList title={`${obj.stationName}站`} extra={<span onClick={()=>{this.jump({obj})}}>查看当天数据</span>} key={index}>
                                          <Card title="当天进站列车:">{obj.trainCount||0} 车次</Card>
                                      </CardList>
                            })
                       }
                    </div>
        return (
            <div>
                {info}
            </div>
        )
    }
 
}
export default withRouter(Index);
Copier après la connexion

7), l'effet est le suivant :

Les étapes correctes pour encapsuler des composants personnalisés dans React

Recommandations associées :

tutoriel js

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:csdn.net
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