什么是React.FC | 封装ant design弹框组件之:ant design 修改密码弹框组件

news/2024/7/15 17:01:31 标签: react.js, javascript, 前端

文章目录

    • 一、什么是React.FC
      • 组件的 props 是什么意思
    • 二、封装ant design弹框组件之:ant design 修改密码弹框组件
      • 定义修改密码弹框组件
      • 使用修改密码弹框组件:
      • [重要]关于提交时候,不同组件 表单数据共享
      • 报错:'Button' cannot be used as a JSX component.

一、什么是React.FC

React提供了一个组件类型React.FunctionComponent,可简写React.FC。

  • 可以接收一个泛型p,默认是{}
  • children,返回一个React.ReactNode,这个children是任何component都拥有的
  • 静态属性defaultProps,组件的默认属性,外部可以不传这个属性。

我们使用React.FC来写 React 组件的时候,是不能用setState的,取而代之的是useState()、useEffect等 Hook API

javascript">import React from 'react';

type MyComponentProps = {
   
  name: string;
};

const MyComponent: React.FC<MyComponentProps> = ({
     name }) => {
   
  return <div>Hello, {
   name}!</div>;
};

在这个示例中,MyComponent 是一个函数组件,接受一个名为 MyComponentProps 的对象作为参数,并返回一个 JSX 元素。使用 React.FC 声明 MyComponent 的类型,明确了它接受的 props 参数类型为 MyComponentProps。

使用 React.FC 可以提供更严格的类型检查,并帮助捕获潜在的错误。它还可以让代码更易读和理解,因为它清晰地定义了函数组件的输入和输出。

组件的 props 是什么意思

在 React 中,组件的 props(属性)是组件接收的参数,用于传递数据和配置信息给组件。

当我们使用组件时,可以通过在组件标签上添加属性来传递数据给组件。这些属性将作为 props 在组件内部访问和使用。

例如,函数组件 MyComponent,它接收一个名为 name 的属性:

javascript">function MyComponent(props) {
   
  return <div>Hello, {
   props.name}!</div>;
}

这个例子中,name 是 MyComponent 组件的一个属性,可以通过 props.name 来访问传递给组件的值。

当我们在父组件中使用 MyComponent 时,可以像这样传递 name 属性的值:

javascript"><MyComponent name="Alice" />

我们将字符串 “Alice” 作为 name 属性的值传递给 MyComponent 组件。

通过使用组件的 props,我们可以在父组件和子组件之间传递数据、配置组件的行为,并实现组件之间的交互。

二、封装ant design弹框组件之:ant design 修改密码弹框组件

定义修改密码弹框组件

添加了 ChangePasswordModalProps 类型定义,并将 visible 属性添加到组件中。同时,我们在 handleOk 函数中调用传递进来的 onOk 回调函数

ChangePasswordModal.tsx

javascript">import React, {
    useState } from 'react';
import {
    Button, Card, Modal, Input, Form, message } from 'antd';

type ChangePasswordModalProps = {
   
  visible: boolean;
  onCancel: () => void;
  onOk: () => void;
};

const ChangePasswordModal: React.FC<ChangePasswordModalProps> = ({
     visible, onCancel, onOk }) => {
   
  const [form] = Form.useForm();

  return (
    <Modal
      title="修改密码"
      visible={
   visible}
      onCancel={
   onCancel}
      onOk={
   onOk}
    >
      <Form form={
   form}>
        <Form.Item
          name="oldPassword"
          label="旧密码"
          rules={
   [{
    required: true, message: '请输入旧密码' }]}
        >
          <Input.Password />
        </Form.Item>
        <Form.Item
          name="newPassword"
          label="新密码"
          rules={
   [{
    required: true, message: '请输入新密码' }]}
        >
          <Input.Password />
        </Form.Item>
        <Form.Item
          name="confirmPassword"
          label="确认密码"
          rules={
   [{
    

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

相关文章

React 元素拖拽教程 react-dnd 实现拖拽

React元素拖拽能力教程 h5原生的拖拽处理起来过分的繁琐&#xff0c;而社区已经提供了成熟的库 react-dnd 来帮助我们实现这些细节&#xff0c;我们只需要关心业务逻辑即可。 下面的内容主要是适用于单个元素的拖拽&#xff0c;从一个容器中拖入另外一个容器中&#xff0c;没有…

Flink实时电商数仓之旁路缓存

撤回流的处理 撤回流是指流式处理过程中&#xff0c;两表join过程中的数据是一条一条跑过来的&#xff0c;即原本可以join到一起的数据在刚开始可能并没有join上。 撤回流的格式&#xff1a; 解决方案 定时器&#xff1a;使用定时器定时10s&#xff08;数据最大的时间差值&am…

PPT插件-大珩助手-统一尺寸使用方法

操作方法 先选中1个或多个形状&#xff0c;然后最后选择目标形状&#xff0c;若希望形状的位置也改变&#xff0c;则需要在对齐幻灯下选中对齐对象。 等比缩放 将选中的1个或多个形状的外形尺寸设置为目标形状大小&#xff0c;图像的纵横比可能发生变化 等高裁剪 图像的纵…

Spring Cloud Gateway 缓存区异常

目录 1、问题背景 2、分析源码过程 3、解决办法 最近在测试环境spring cloud gateway突然出现了异常&#xff0c;在这里记录一下&#xff0c;直接上干货 1、问题背景 测试环境spring cloud gateway遇到以下异常 DataBufferLimitException: Exceeded limit on max bytes t…

如何打开wps的备份中心查找备份文件

备份中心在我们使用WPS Office时扮演着重要的角色。经常保存文件的同时&#xff0c;我们也应该学会备份文件&#xff0c;以免意外损失。本文将向您介绍如何使用WPS备份中心来查找并恢复备份文件&#xff0c;方便您在需要时快速找到所需文件。 图片来源于网络&#xff0c;如有侵…

c++ 智能指针 unique_ptr

使用指针时很容易出现内存泄漏&#xff0c;便引入了智能指针&#xff0c;c 11中主要有三类 std::unique_ptr&#xff1a;独占资源指针&#xff0c;同一时刻只能有一个指针指向同一个对象std::shared_ptr&#xff1a;共享资源指针&#xff0c;同一时刻可以有多个指针指向同一个…

数据库-简单表的操作And查看表的结构

查看表的结构 desc 表名;mysql> use study; Database changed mysql> create table Class(class_id int ,class_name varchar(128),class_teachar varchar(64)) ; Query OK, 0 rows affected (0.06 sec) mysql> show tables; ----------------- | Tables_in_study…

软件测试基础理论学习-常见软件测试模型

V模型 背景 软件测试中的V模型是在瀑布模型基础上发展起来的一种软件开发和测试过程的图形表示方法&#xff0c;它的背景源于20世纪80年代末至90年代初对传统瀑布模型在实际应用中所暴露的问题进行改进的需求。 传统的瀑布模型是一种线性的开发流程&#xff0c;要求所有需求在…