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

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

文章目录

    • 一、什么是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

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 的属性:

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

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

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

<MyComponent name="Alice" />

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

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

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

定义修改密码弹框组件

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

ChangePasswordModal.tsx

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={
   [{
    

相关文章:

  • 案例分享:Qt多国语言输入法软键盘
  • SpringBoot整合Elasticsearch报错
  • docker部署kibana
  • Python数据实战项目
  • 使用docker build构建image
  • es集群安装及优化
  • C#中使用as关键字将对象转换为指定类型
  • xcode-开发相关
  • 外包干了4个月,技术退步明显了...
  • Apache网页优化
  • html2canvas+jsPDF导出超长网页的PDF
  • C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式
  • 运维系列Nginx:设置黑/白名单IP限制
  • spring 之 TransactionManager使用详解
  • 线性代数笔记6 1.6
  • 外包干了3个多月,技术退步明显。。。。。
  • 什么是跨链桥?
  • test coverate-04-测试覆盖率 Cobertura Cobertura/emma/jacoco 的差异对比?
  • 高德地图信息窗体设置
  • UE5 VR版增强输入初体验 官方模板学习
  • 特朗普:将于19日分别与普京和泽连斯基通话
  • 江苏省委组织部副部长高颜已任南京市委常委、组织部部长
  • 一船明月过沧州:为何这座城敢称“文武双全”?
  • 董军同德国国防部长举行会谈
  • 把中国声音带向世界,DG和Blue Note落户中国
  • 腾讯一季度净利增14%:AI直接拉动广告收入增长,王者荣耀流水创新高