当前位置: 首页 > news >正文

React 中,构建组件的方式

1. 函数组件(Function Components)

函数组件是最简单的组件形式,通常用于展示性的组件,不涉及复杂的生命周期方法。

import React from 'react';function Welcome(props) {return <h1>Hello, {props.name}</h1>;
}export default Welcome;

2. 类组件(Class Components)

类组件是早期 React 推荐的组件形式,支持状态管理和生命周期方法。虽然现在函数组件结合 Hooks 可以实现相同的功能,但类组件仍然在很多项目中使用。

import React, { Component } from 'react';class Welcome extends Component {constructor(props) {super(props);this.state = {name: props.name};}componentDidMount() {// 组件挂载后执行的操作}render() {return <h1>Hello, {this.state.name}</h1>;}
}export default Welcome;

3. 纯函数组件(Pure Function Components)

纯函数组件是函数组件的一种特殊情况,使用 React.memo 包装,可以避免不必要的重新渲染。

import React from 'react';const Welcome = React.memo(function Welcome(props) {return <h1>Hello, {props.name}</h1>;
});export default Welcome;

4. Hooks

React 16.8 引入了 Hooks,允许在函数组件中使用状态和其他 React 特性,如 useState、useEffect 等。

import React, { useState, useEffect } from 'react';function Welcome(props) {const [name, setName] = useState(props.name);useEffect(() => {// 组件挂载后执行的操作console.log('Component did mount');}, []);return <h1>Hello, {name}</h1>;
}export default Welcome;

5. 高阶组件(Higher-Order Components, HOC)

高阶组件是一种模式,用于在组件之间复用代码。HOC 是一个函数,接受一个组件并返回一个新的组件。

import React from 'react';function withWelcome(WrappedComponent) {return function EnhancedComponent(props) {return <WrappedComponent {...props} name="World" />;};
}function Welcome(props) {return <h1>Hello, {props.name}</h1>;
}const EnhancedWelcome = withWelcome(Welcome);export default EnhancedWelcome;

6. Render Props

Render Props 是一种在组件之间共享代码的模式。通过将一个函数作为 prop 传递,可以在组件之间传递渲染逻辑。

import React from 'react';class WelcomeProvider extends React.Component {state = {name: 'World'};render() {return this.props.render(this.state.name);}
}function Welcome(props) {return (<WelcomeProvider render={(name) => <h1>Hello, {name}</h1>} />);
}export default Welcome;

7. Context API

Context API 用于在组件树中传递数据,而无需手动将 props 一层层传递下去。适用于全局状态管理。

import React, { useContext } from 'react';const NameContext = React.createContext();function Welcome() {const name = useContext(NameContext);return <h1>Hello, {name}</h1>;
}function App() {return (<NameContext.Provider value="World"><Welcome /></NameContext.Provider>);
}export default App;
http://www.lryc.cn/news/445055.html

相关文章:

  • Android开发高频面试题之——Android篇
  • 禁用拷贝构造函数和赋值构造函数
  • OneDrive for Business with Office Online 部署方案
  • win10 win11 设置文件权限以解决Onedrive不能同步问题
  • Unity DOTS系列之IJobChunk来迭代处理数据
  • 哈希——哈希表
  • 简单了解 JVM
  • 已经30岁了,想转行从头开始现实吗?什么样的工作算好工作?
  • 快速理解docker(一)docker 简介
  • RHCS认证-Linux(RHel9)-Ansible
  • 【Python】Spyder:科学 Python 开发环境
  • SpringBootWeb响应
  • CMake 构建Qt程序弹出黑色控制台
  • 虚拟机centos_7 配置教程(镜像源、配置centos、静态ip地址、Finalshell远程操控使用)
  • git 删除 git push 失败的记录
  • 【专题】2024年中国白酒行业数字化转型研究报告合集PDF分享(附原数据表)
  • 哪款品牌充电宝性价比比较高?五款性价比绝佳充电宝推荐
  • 巨坑!!华为大数据平台sparksql,连接gauss200数据库
  • BGP相关知识笔记
  • 在 Windows 上运行 Vue 项目时解决 ‘NODE_OPTIONS‘ 错误
  • 面试真题:谈一谈Mysql的分库分表
  • 玄机靶场--蚁剑流量
  • uniapp map设置高度为100%后,会拉伸父容器的高度
  • CICD从无到会
  • 责任链模式优化 文章发布的接口(长度验证,敏感词验证,图片验证等环节) 代码,示例
  • Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch
  • 十一、SOA(SOA的具体设计模式)
  • Mybatis原理
  • 黑马头条day3-2 自媒体文章管理
  • JinDouYun性能测试工具使用方法