Maison >interface Web >js tutoriel >Premiers pas avec React : Comment créer des composants dans React
Avant de créer un composant, veuillez faire attention aux points suivants :
La première lettre du nom du composant doit être en majuscule
Le JSX renvoyé dans le composant ne peut être qu'un nœud racine, et tout le contenu doit être encadré par un élément
Aucun Les composants fonctionnels avec état ne peuvent comprendre que les réalisations sont générées par une fonction, ce qui rend le code plus lisible, rationalisé, pratique et réduit la redondance. Les composants sans état ont les caractéristiques suivantes :
import React from 'react' import { connect } from 'dva'; function CreateComponent(props) { console.log(props); return ( <p> <span>{props.name}今年{props.age}岁</span> </p> ) } export default connect(state => ({ name:'小明', age:15 }))(CreateComponent);2.Composant de classe React.Component Chaque classe de composant doit implémenter une méthode de rendu. Portez une attention particulière ici. Cette méthode de rendu doit renvoyer un élément JSX, c'est-à-dire envelopper tout le contenu avec un élément le plus externe. Il est illégal de renvoyer plusieurs éléments JSX côte à côte, comme indiqué ci-dessous :
import React from 'react' class CreateComponent extends React.Component { render() { return( <p> <h2>标题</h2> <ul> <li>首先</li> <li>其次</li> <li>最后</li> </ul> </p> ) } } export default CreateComponent;L'exemple ci-dessus consiste à envelopper l'élément h2 et ul avec un pÉvénements de composant ListeningCe qui précède sont des exemples de surveillance d'événements et de passage de paramètres
import React from 'react' class CreateComponent extends React.Component { clickFunc = (e) => { console.log("监听:",e.target.innerHTML); } clickValue = (value) => { console.log(value); } render() { return ( <p> <a onClick={this.clickFunc}>监听事件</a> <br/> <a onClick={this.clickValue.bind(this,123)}>this对象</a> </p> ) } } export default CreateComponent;
2 L'état et setState du composant
import React from 'react' class CreateComponent extends React.Component { state = { flag : true } clickValue = () => { this.setState({ flag: !this.state.flag }) } render() { return ( <p> <span>flag的值为:{this.state.flag ? '真' : '假'}</span> <br/> <button onClick={this.clickValue}>改变flag值</button> </p> ) } } export default CreateComponent;
import React from 'react'; function NewComponent(props) { return ( <p> {props.content} </p> ); } export default NewComponent;
Comme vous pouvez le voir ici, les props sont les valeurs d'attribut apportées par le composant. Les props permettent en fait aux composants externes de se configurer eux-mêmes, tandis que l'état est l'état dans. que le composant contrôle lui-même.
import React from 'react' import NewComponent from './newComponent.js' class CreateComponent extends React.Component { render() { return ( <p> <NewComponent content={'我是内容'} /> </p> ) } } export default CreateComponent;
4. Le cycle de vie du composant
Initialisation du composant constructeur :Résultat de sortie :
import React from 'react' class CreateComponent extends React.Component { constructor () { super() console.log('construct:页面初始化') } componentWillMount () { console.log('componentWillMount:页面将要渲染') } componentDidMount () { console.log('componentDidMount:页面渲染结束') } render() { console.log('render:页面渲染'); return ( <p> 页面渲染 </p> ) } } export default CreateComponent;suppression du composantcomponentWillUnmount
construct:页面初始化 componentWillMount:页面将要渲染 render:页面渲染 componentDidMount:页面渲染结束
Créez un composant NewComponent, puis dans le composant CreateComponent Introduisez ce composant comme suit :
import React from 'react'; class NewComponent extends React.Component { componentWillUnmount() { console.log('componentWillUnmount:将要从页面中删除'); } render() { return ( <p> {this.props.content} </p> ); } } export default NewComponent;
Lorsque l'on clique sur le bouton Supprimer, le composant NewComponent sera supprimé et la fonction composantWillUnmount sera exécutée avant la suppression
import React from 'react' import NewComponent from "./newComponent.js"; class CreateComponent extends React.Component { constructor () { super() console.log('construct:页面初始化'); this.state = { content:'测试组件', isDelete:false } } componentWillMount () { console.log('componentWillMount:页面将要渲染') } componentDidMount () { console.log('componentDidMount:页面渲染结束') } deleteFunc = () => { this.setState({ isDelete:true }) } render() { console.log('render:页面渲染'); return ( <p> 页面渲染 <input type="button" value='删除' onClick={this.deleteFunc}/> {!this.state.isDelete?( <NewComponent content={this.state.content}/> ):(null)} </p> ) } } export default CreateComponent;Résultat de sortie :
Les cycles de vie ci-dessus sont les cycles de vie des composants que nous utilisons souvent. a également le cycle de vie de la phase de mise à jour. Cependant, ceux-ci sont moins couramment utilisés. Voici une brève introduction :
construct:页面初始化 componentWillMount:页面将要渲染 render:页面渲染 componentDidMount:页面渲染结束 componentWillUnmount:将要从页面中删除
ShouldComponentUpdate(nextProps, nextState)
À ce stade, cliquez sur le bouton Supprimer et la page ne sera pas rendue. est dû au fait que la valeur de retour est définie sur false dans ShouldComponentUpdate. Lorsque la valeur de retour est false, la page ne peut pas être restituée. Le premier paramètre de cette fonction représente les derniers accessoires et le deuxième paramètre représente le dernier état
import React from 'react' import NewComponent from "./newComponent.js"; class CreateComponent extends React.Component { constructor () { super() console.log('construct:页面初始化'); this.state = { content:'测试组件', isDelete:false } } componentWillMount () { console.log('componentWillMount:页面将要渲染') } componentDidMount () { console.log('componentDidMount:页面渲染结束') } shouldComponentUpdate(nextProps, nextState){ if(nextState.isDelete){ return false; } } deleteFunc = () => { this.setState({ isDelete:true }) } render() { console.log('render:页面渲染'); return ( <p> 页面渲染 <input type="button" value='删除' onClick={this.deleteFunc}/> {!this.state.isDelete?( <NewComponent content={this.state.content}/> ):(null)} </p> ) } } export default CreateComponent;
componentWillReceiveProps(nextProps)
dans le composant CreateComponent :
import React from 'react'; class NewComponent extends React.Component { componentWillUnmount() { console.log('componentWillUnmount:将要从页面中删除'); } componentWillReceiveProps(nextProps){ console.log(nextProps); } render() { return ( <p> {this.props.content} </p> ); } } export default NewComponent;
Cependant, componentWillReceiveProps sera in Obsolète après le début de réagir16.3.0
import React from 'react' import NewComponent from "./newComponent.js"; class CreateComponent extends React.Component { constructor () { super() console.log('construct:页面初始化'); this.state = { content:'测试组件', isDelete:false } } componentWillMount () { console.log('componentWillMount:页面将要渲染') } componentDidMount () { console.log('componentDidMount:页面渲染结束') } changeFunc = () => { this.setState({ content:'文字修改' }) } render() { console.log('render:页面渲染'); return ( <p> 页面渲染 <input type="button" value='修改content' onClick={this.changeFunc}/> {!this.state.isDelete?( <NewComponent content={this.state.content}/> ):(null)} </p> ) } } export default CreateComponent;
componentWillUpdate :
componentDidUpdate :
Remarque :
composantWillUpdate, composantWillReceiveProps, composantWillMount ont trois vies Le cycle sera obsolète après réagir116.3.0Recommandations associées :
Analyse des instances du cycle de vie des composants React
Explication détaillée du composant React Dragact 0.1.4
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!