Home > Web Front-end > JS Tutorial > What are the three ways to create components in react?

What are the three ways to create components in react?

王林
Release: 2020-12-01 15:37:09
forward
1920 people have browsed it

What are the three ways to create components in react?

Introduction to the three ways to create components in React and their similarities and differences:

1. Functional components

(Recommended tutorial: react tutorial)

1. Grammar

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

2. Features

You can go to the official website to learn about the new hooks API. It used to be stateless. Components can now be stateful

Components cannot access this object

Cannot access life cycle methods

3. Suggestions:

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

2. es5 way React.createClass component

1. Syntax

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

3.es6 method 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 automatically bind this, and developers need to bind 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 for creating components:

1. The first letter of the component name must be capitalized

2. The component can only contain one root node (if this root node If you don’t want tags to wrap it up, you can introduce Fragment

3. Try to use functional components to keep them simple and stateless.

Finally, let’s compare functional components and class components for the same Difference in how functions are written:

Comparison of state controlled by parent component

Function component:

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-maintained state

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

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