【前端知识】React 基础巩固(十七)——组件化开发(一)

news/2024/6/1 20:17:21 标签: 前端, react.js, javascript

React 基础巩固(十七)——组件化开发(一)

组件化开发

  • 什么是组件化开发?
    • 分而治之的思想
    • 将一个页面拆分成一个个小的功能块
    • 将应用抽象成一颗组件树
  • React的组件相对于Vue更加的灵活和多样
    • 按照不同的方式可以分为很多类组件
      • 根据组件的定义方式,分为:函数组件类组件
      • 根据组件内部是否有状态需要维护,分为:无状态组件有状态组件
      • 根据组件的不同职责,分为:展示型组件容器型组件
    • 函数组件、无状态组件、展示组件主要关注UI的展示
    • 类组件、有状态组件、容器组件主要关注数据逻辑

类组件

  • 定义
    • 组件名称是大写字符开头
    • 类组件需继承自 React.Component
    • 类组件必须实现render函数
  • 使用class定义一个组件
    • constructor是可选的,通常在constructor中初始化一些数据
    • this.state中维护的就是我们组件内部的数据
    • render()方法是class组件中唯一必须实现的方法
javascript">import React from "react";

// 1.类组件
class App extends React.Component {
  constructor() {
    super()

    this.state = {
      message: 'hello react'
    }
  }

  render() {
    const { message } = this.state

    return <div>{ message }</div>;
  }
}

export default App;

  • render函数的返回值
    • 当render被调用时,它会检查 this.props 和 this.state 的变化并返回以下类型之一:
      • React元素(通常通过JSX创建,例如<div/>会被React渲染为DOM节点,<MyComponent/>会被React渲染为自定义组件)
      • 数组或fragments(使得render方法可以返回多个元素)
      • Portals(可以渲染子节点到不同的DOM子树中)
      • 字符串或数字类型(在DOM中被渲染为文本节点)
      • 布尔类型或null(什么都不渲染)

函数组件

  • 定义:函数组件是使用function来进行定义的函数,只是这个函数会返回和类组件中render函数返回一样的内容
  • 特点:
    • 没有生命周期,也会被更新并挂载,但是没有生命周期函数
    • this关键字不能指向组件实例(因为没有组件实例)
    • 没有内部状态(state)
javascript">// 函数式组件
function App() {
  // 返回值:和类组件中render函数返回的一致
  return <div>hello react</div>;
}

export default App

http://www.niftyadmin.cn/n/1755899.html

相关文章

quilt data 安装数据包

安装一个数据包 搜索数据包 如上文所述&#xff0c;数据包是使用注册表进行管理的。您的机器上有一个本地注册表&#xff0c;可能还有许多远程注册表在 “世界上其他地方”。使用 list_packages 方法查看注册表上可用的数据包&#xff1a; import quilt3 # 列出本地数据包 l…

matplotlib显示异常可能是数据溢出问题

数据类型 uint16的存储范围为2**16 65535&#xff0c;若数据处理后的值大于65535就会出问题 举例说明 import matplotlib.pyplot as plt if __name__"__main__":path rC:\Users\user\Desktop\00000002.dcmds dicom.dcmread(path)img dicom.pixel_data_handlers…

C#(五十二)之线程

线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作&#xff0c;那么设置不同的线程执行路径往往是有益的&#xff0c;每个线程执行特定的工作。 C#线程操作&#xff0c;需要使用到Thread类。 使用命名空间 using Sy…

No module named ‘pytorch_lightning.utilities.distributed‘

在按照stable- diffusion中&#xff0c;需要安装很多依赖。如果版本不对&#xff0c;则不能成功运行&#xff0c;标题的问题就是如此。 相关参考&#xff1a;stable- diffusion V1效果咋样呢&#xff1f;V2呢&#xff1f;安装成功记录。 解决方案&#xff1a; pip install py…

NB-IoT学习笔记 —— NB-IoT介绍

一、简介 NB-IoT 是指窄带物联网&#xff08;Narrow Band Internet of Things&#xff09;技术&#xff0c;是一种低功耗广域&#xff08;LPWA&#xff09;网络技术标准&#xff0c;基于蜂窝技术&#xff0c;用于连接使用无线蜂窝网络的各种智能传感器和设备&#xff0c;聚焦于…

每日一题之最长连续递增序列

最长连续递增序列 题目链接 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定&#xff0c;如果对于每个 l < i < r&#xff0c;都有…

15.输入捕获

1.输入捕获介绍&#xff1a; STM32除了基本定时器(定时器6和定时器7)之外&#xff0c;其他的都具有输入捕获功能&#xff1b;输入捕获可以对输入的信号的上升沿、下降沿或双边沿进行捕获&#xff0c;通常用于测量输入信号的脉宽、测量PWM输入信号的频率及占空比&#xff1b;首…

ux-grid实现表格排序

需求说明&#xff1a; 1、第一行不参与排序 2、实现带%排序 3、实现null值排序 4、实现值相等不排序 5、实现含有占位符‘–‘排序放到最后 表格属性说明文档 效果图如下&#xff1a; 代码如下&#xff1a; <template><div><ux-gridhighlightCurrentRow:data&…