React 从零开始学习(十四)—— 类组件 VS 函数式组件

本文介绍了React中定义组件的两种方式:类组件和函数式组件。类组件通过`class`关键字创建,而函数式组件使用ES6箭头函数。文章展示了如何创建和使用这两个组件类型,并给出了实例,包括一个表格组件的类组件实现和拆分为表头及内容的函数式组件。最后,将函数式组件整合到一起,展示了在实际应用中如何引入和使用这些组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类组件(Class Components)VS 函数式组件(Functional Components)

React 定义组件

React 定义组件的方式有两种:(1)类组件(2)函数式组件

注意,原生 HTML 元素名以小写字母开头,自定义的 React 类名以大写字母开头。比如 下面的例子,ClassTable 不能写成 classTable。除此之外还需要注意组件类只能包含一个顶层标签,否则也会报错。

类组件(Class Components)

类组件:使用 class 关键字来创建组件。

新建 ClassTable.js

import React, { Component } from 'react';

class ClassTable extends Component {
  render () {
    return (
      <table style={{ "width": '400px' }}>
        <thead>
          <tr>
            <th>Name</th>
            <th>Address</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>王小虎</td>
            <td>上海市普陀区金沙江路 1518</td>
          </tr>
          <tr>
            <td>王小虎</td>
            <td>上海市普陀区金沙江路 1518</td>
          </tr>
          <tr>
            <td>王小虎</td>
            <td>上海市普陀区金沙江路 1518</td>
          </tr>
          <tr>
            <td>王小虎</td>
            <td>上海市普陀区金沙江路 1518</td>
          </tr>
        </tbody>
      </table>
    );
  }
}

export default ClassTable;

函数式组件(Functional Components)

函数式组件:使用 ES6 箭头函数来创建组件。

格式:

const Example = (props) => {
  return <div />;
}

或者:

function Example(props) {
  return <div />;
}

新建表头组件 TableHeader.js

const TableHeader = () => {
    return (
        <thead>
            <tr>
                <th>Name</th>
                <th>Address</th>
            </tr>
        </thead>
    );
}
export default TableHeader

新建表格内容组件 TableBody.js

const TableBody = () => {
  return (
    <tbody>
      <tr>
        <td>王小虎</td>
        <td>上海市普陀区金沙江路 1518</td>
      </tr>
      <tr>
        <td>王小虎</td>
        <td>上海市普陀区金沙江路 1518</td>
      </tr>
      <tr>
        <td>王小虎</td>
        <td>上海市普陀区金沙江路 1518</td>
      </tr>
      <tr>
        <td>王小虎</td>
        <td>上海市普陀区金沙江路 1518</td>
      </tr>
    </tbody>
  );
}
export default TableBody

接下来,新建 FunctTable.js,引入表头文件 TableHeader.js 和表格内容文件 TableBody.js

import React, { Component } from 'react'
import TableHeader from './TableHeader'
import TableBody from './TableBody'
class FunctTable extends Component {
  render () {
    return (
      <table style={{ "width": '400px' }}>
        <TableHeader />
        <TableBody />
      </table>
    )
  }
}
export default FunctTable

App.js 中引入类组件 ClassTable 和函数式组件 FunctTable

import './assets/css/App.css';
import ClassTable from './components/ClassTable'
import FunctTable from './components/FunctTable'

function App () {
  return (
    <div className="App">
      <p>类组件(Class Components)</p>
      <ClassTable />
      <p>函数式组件(Functional Components)</p>
      <FunctTable />
    </div>
  );
}
export default App;

页面展示如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值