Detailed introduction to higher-order components in React
This article mainly introduces the introduction to React high-order components. In this article, we introduce in detail what high-order components are and how to use high-order components. Now we share them with you and give them a reference.
Definition of higher-order components
HoC does not belong to React’s API. It is an implementation pattern, which is essentially a function that accepts one or more React components. As a parameter, return a brand new React component instead of modifying the existing component. Such components are called higher-order components. During the development process, when some functions need to be reused in multiple component classes, a Hoc can be created.
Basic usage
Wrapping method
const HoC = (WrappendComponent) => { const WrappingComponent = (props) => ( <p className="container"> <WrappendComponent {...props} /> </p> ); return WrappingComponent; };
In the above code, WrappendComponent is accepted as a parameter. This parameter is what will be HoC For ordinary wrapped components, wrap a p in render and give it the className attribute. The resulting WrappingComponent and the passed-in WrappendComponent are two completely different components.
In WrappingComponent, you can read, add, edit, and delete the props passed to WrappendComponent, and you can also wrap WrappendComponent with other elements to implement encapsulation styles, add layout, or other operations.
Composition method
const HoC = (WrappedComponent, LoginView) => { const WrappingComponent = () => { const {user} = this.props; if (user) { return <WrappedComponent {...this.props} /> } else { return <LoginView {...this.props} /> } }; return WrappingComponent; };
There are two components in the above code, WrappedComponent and LoginView. If user exists in the incoming props, the WrappedComponent component will be displayed normally, otherwise Display the LoginView component to allow the user to log in. The parameters passed by HoC can be multiple. Pass multiple components to customize the behavior of the new component. For example, the main page is displayed when the user is logged in, and the login interface is displayed when the user is not logged in. When rendering the list, pass in the List and Loading components to add the new component. Loading behavior.
Inheritance method
const HoC = (WrappendComponent) => { class WrappingComponent extends WrappendComponent { render() ( const {user, ...otherProps} = this.props; this.props = otherProps; return super.render(); } } return WrappingComponent; };
WrappingComponent is a new component that inherits from WrappendComponent and shares the functions and properties of the parent. You can use super.render() or super.componentWillUpdate() to call the parent's life cycle function, but this will couple the two components together and reduce the reusability of the component.
The packaging of components in React is based on the idea of the smallest available unit. Ideally, a component only does one thing, which is in line with the single responsibility principle in OOP. If you need to enhance the functionality of a component, enhance the component by combining it or adding code instead of modifying the original code.
Note
Do not use higher-order components in the render function
render() { // 每一次render函数调用都会创建一个新的EnhancedComponent实例 // EnhancedComponent1 !== EnhancedComponent2 const EnhancedComponent = enhance(MyComponent); // 每一次都会使子对象树完全被卸载或移除 return <EnhancedComponent />; }
The diff algorithm in React will compare the old and new sub-object trees to determine whether Update the existing sub-object tree or drop the existing sub-tree and remount.
Static methods must be copied
// 定义静态方法 WrappedComponent.staticMethod = function() {/*...*/} // 使用高阶组件 const EnhancedComponent = enhance(WrappedComponent); // 增强型组件没有静态方法 typeof EnhancedComponent.staticMethod === 'undefined' // true
The Refs attribute cannot be passed
The ref specified in HoC will not be passed to the sub-component. It is required Passed using props through the callback function.
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
How to implement a circular Nodelist Dom list using JS
How to implement text color change after clicking in Vue
How to set the background color for a separate page in Vue-cli
Refresh and tab switching in vue
The above is the detailed content of Detailed introduction to higher-order components in React. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to build a real-time chat application using React and WebSocket Introduction: With the rapid development of the Internet, real-time communication has attracted more and more attention. Live chat apps have become an integral part of modern social and work life. This article will introduce how to build a simple real-time chat application using React and WebSocket, and provide specific code examples. 1. Technical preparation Before starting to build a real-time chat application, we need to prepare the following technologies and tools: React: one for building

React front-end and back-end separation guide: How to achieve front-end and back-end decoupling and independent deployment, specific code examples are required In today's web development environment, front-end and back-end separation has become a trend. By separating front-end and back-end code, development work can be made more flexible, efficient, and facilitate team collaboration. This article will introduce how to use React to achieve front-end and back-end separation, thereby achieving the goals of decoupling and independent deployment. First, we need to understand what front-end and back-end separation is. In the traditional web development model, the front-end and back-end are coupled

How to use React and Flask to build simple and easy-to-use web applications Introduction: With the development of the Internet, the needs of web applications are becoming more and more diverse and complex. In order to meet user requirements for ease of use and performance, it is becoming increasingly important to use modern technology stacks to build network applications. React and Flask are two very popular frameworks for front-end and back-end development, and they work well together to build simple and easy-to-use web applications. This article will detail how to leverage React and Flask

How to build a reliable messaging application with React and RabbitMQ Introduction: Modern applications need to support reliable messaging to achieve features such as real-time updates and data synchronization. React is a popular JavaScript library for building user interfaces, while RabbitMQ is a reliable messaging middleware. This article will introduce how to combine React and RabbitMQ to build a reliable messaging application, and provide specific code examples. RabbitMQ overview:

How to use React and Google BigQuery to build fast data analysis applications Introduction: In today's era of information explosion, data analysis has become an indispensable link in various industries. Among them, building fast and efficient data analysis applications has become the goal pursued by many companies and individuals. This article will introduce how to use React and Google BigQuery to build a fast data analysis application, and provide detailed code examples. 1. Overview React is a tool for building

React code debugging guide: How to quickly locate and resolve front-end bugs Introduction: When developing React applications, you often encounter a variety of bugs that may crash the application or cause incorrect behavior. Therefore, mastering debugging skills is an essential ability for every React developer. This article will introduce some practical techniques for locating and solving front-end bugs, and provide specific code examples to help readers quickly locate and solve bugs in React applications. 1. Selection of debugging tools: In Re

React Responsive Design Guide: How to Achieve Adaptive Front-end Layout Effects With the popularity of mobile devices and the increasing user demand for multi-screen experiences, responsive design has become one of the important considerations in modern front-end development. React, as one of the most popular front-end frameworks at present, provides a wealth of tools and components to help developers achieve adaptive layout effects. This article will share some guidelines and tips on implementing responsive design using React, and provide specific code examples for reference. Fle using React

ReactRouter User Guide: How to Implement Front-End Routing Control With the popularity of single-page applications, front-end routing has become an important part that cannot be ignored. As the most popular routing library in the React ecosystem, ReactRouter provides rich functions and easy-to-use APIs, making the implementation of front-end routing very simple and flexible. This article will introduce how to use ReactRouter and provide some specific code examples. To install ReactRouter first, we need
