Heim > Web-Frontend > js-Tutorial > Die richtigen Schritte zum Kapseln benutzerdefinierter Komponenten in React

Die richtigen Schritte zum Kapseln benutzerdefinierter Komponenten in React

王林
Freigeben: 2020-12-30 09:12:36
nach vorne
2985 Leute haben es durchsucht

Die richtigen Schritte zum Kapseln benutzerdefinierter Komponenten in React

Artikelhintergrund:

Um in tatsächlichen Projekten das Schreiben von doppeltem Code zu vermeiden und die spätere Wartung zu erleichtern, können wir denselben Codestil anpassen, indem wir ihn in Komponenten kapseln, und müssen dann nur die benutzerdefinierte Komponente aufrufen die Seite Das ist es.

(Lernvideo-Freigabe: Javascript-Video-Tutorial)

Werfen wir einen Blick auf die spezifischen Schritte:

1. Kapseln Sie zunächst die benutzerdefinierte Komponente

1) und erstellen Sie einen neuen CardList-Ordner

2). CardList-Datei Erstellen Sie eine neue Datei „index.js“ im Ordner und schreiben Sie den folgenden Code in die Datei „index.js“:

//index.js暴露组件CardList
import Card from './card';
import CardList from './cardList';
 
CardList.Card = Card;
export default CardList;
Nach dem Login kopieren

3). Erstellen Sie eine neue Datei „cardList.js“ im Ordner „CardList“ und schreiben Sie den folgenden Code darunter Datei:

import { Component } from 'react';
import withRouter from 'umi/withRouter';
import style from './index.css';
 
/**
 * 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;
Nach dem Login kopieren

4) , Erstellen Sie eine neue index.css-Datei im CardList-Ordner und schreiben Sie den Stil in die Datei

.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;
}
Nach dem Login kopieren

5), Erstellen Sie eine neue card.js-Datei im CardList-Ordner und schreiben Sie den folgenden Code Unter der Datei:

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;
Nach dem Login kopieren

6) ist die Verwendung wie folgt:

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);
Nach dem Login kopieren

7), der Effekt ist wie folgt:

Die richtigen Schritte zum Kapseln benutzerdefinierter Komponenten in React

Verwandte Empfehlungen: js-Tutorial

Das obige ist der detaillierte Inhalt vonDie richtigen Schritte zum Kapseln benutzerdefinierter Komponenten in React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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