Home > Web Front-end > JS Tutorial > body text

What are the three ways to create components in react

王林
Release: 2021-03-15 10:56:08
forward
3260 people have browsed it

What are the three ways to create components in react

The following are three ways and characteristics of react components. I hope they can be helpful to everyone.

1. Functional components:

(1) Syntax:

function myConponent(props) {
	return `Hello${props.name}`
}
Copy after login

(2) Features:

Added hooks API can be found on the official website Understand, it used to be a stateless component, but now it can be stateful

The component cannot access this object

Cannot access the life cycle method

(3) Suggestions:

If possible, try to use stateless components to keep them simple and stateless. [What the author means is to try to use parent components to control child components, child components are used for display, and parent components are responsible for logic]

2. es5 way React.createClass component

(1 ) Grammar:

var myCreate = React.createClass({
	defaultProps: {
		//code
	},
	getInitialState: function() {
		return { //code };
	},
	render:function(){
		return ( //code );
	}
})
Copy after login

(2) Features:

This method is relatively old and will gradually be eliminated

(free video tutorial recommendation: javascript video tutorial )

3, es6 mode class:

(1) Syntax:

class InputControlES6 extends React.Component {
	constructor(props) {
		super(props);
		this.state = {
			state_exam: props.exam
		}
		//ES6类中函数必须手动绑定
		this.handleChange = this.handleChange.bind(this);
	}
	handleChange() {
		this.setState({
			state_exam: 'hello world'
		});
	}
	render() {
		return( //code )
	};
}
Copy after login

(2) Features:

Member functions will not be automatic Binding this requires developers to bind it manually, otherwise this cannot obtain the current component instance object.

State state is initialized in the constructor

The props attribute type and component default attribute are used as attributes of the component class, not the attribute of the component instance, so the static configuration of the class is used.

Please remember the basic principles of creating components:

  • The first letter of the component name must be capitalized

  • Components can only Contains a root node (if you don’t want the label to wrap this root node, you can introduce Fragment. It doesn’t matter if you don’t know how to use Fragment. You can read the author’s basic knowledge of react (1) in this article)

  • Use functional components as much as possible to keep them simple and stateless.

Finally, let’s compare the differences between function components and class components for writing the same function:

Comparison of state controlled by parent components

Function components :

function App(props) {
	function handleClick() {
		props.dispatch({ type: 'app/create' });
	}
	return <div onClick={handleClick}>{props.name}</div>
}
Copy after login

class component:

class App extends React.Component {
	handleClick() {
		this.props.dispatch({ type: &#39;app/create&#39; });
	}
	render() {
		return <div onClick={this.handleClick.bind(this)}>{this.props.name}</div>
	}
}
Copy after login

Comparison of self-maintenance status

import React, { useState } from &#39;react&#39;;
function App(props) {
	const [count, setCount] = useState(0);
	function handleClick() {
		setCount(count + 1);
	}
	return <div onClick={handleClick}>{count}</div>
}
Copy after login

class component:

class App extends React.Component {
	state = { count: 0 }
	handleClick() {
		this.setState({ count: this.state.count +1 })
	}
	render() {
		return <div onClick={this.handleClick.bind(this)}>{this.state.count}</div>
	}
}
Copy after login

Related recommendations: react tutorial

The above is the detailed content of What are the three ways to create components in react. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template