React+Typescript使用接口泛型处理props

news/2024/7/15 17:03:12 标签: react.js, typescript, 前端

好 刚讲完组件 那么 这次 我们来看一下 数据传递的 props

还是上文的案例 例如 我们想将 title 传给Hello组件
之前我们可以直接这样
在这里插入图片描述
以一个标签属性的形式传过去

而我们在子组件中 这样去使用
在这里插入图片描述
但现在 我们从编辑器中都可以看出 这种写法已经不行了

然后 我们将 hello 组件改成这样

typescript">import * as React from "react";

interface IProps {
    title: string
}

export default class hello extends React.Component<IProps> {

    public constructor(props:any){
        super(props);
    }
    public render() {
        return (
            <div>{ this.props.title }</div>
        )
    }
}

其中 最大的不同在于 我们定义了一个接口 IProps
规定里面要有一个 string字符串类型的字段 叫title
然后 挂到 react的Component上进行泛型
然后 这是 我们的父子组件就都不报错了
在这里插入图片描述
在这里插入图片描述
当然 我们可以传多个数据

这里 我们给子组件一个 age 数字 20
在这里插入图片描述
然后子组件规定一下类型
在这里插入图片描述
这里 我们用了Number 说他是个数字类型 那么 我们父组件尝试改成 字符串试试
在这里插入图片描述
很显然 这里就报错了 这也是Ts的一个意义 能够加强代码的规范和可读性

好 最后 父组件代码如下

typescript">import Hello from "./components/hello";

function App() {
  return (
    <div className="App">
        hello React Typescript
        <Hello title = "高阶组件" age = { 20 } />
    </div>
  );
}

export default App;

子组件代码

typescript">import * as React from "react";

interface IProps {
    title: string,
    age: number
}

export default class hello extends React.Component<IProps,any> {

    public constructor(props:any){
        super(props);
    }
    public render() {
        return (
            <div>
                <div>{ this.props.title }</div>
                <div>{ this.props.age }</div>
            </div>
        )
    }
}

然后 我们运行项目
在这里插入图片描述
也是没有任何问题


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

相关文章

JS中的 运算符 、 ||运算符 、 ??运算符、 ?. 运算符对比详解

javascript有不少好用的运算符&#xff0c;合理的使用可以大大提高工作效率&#xff0c;从而就有更多的时间去摸鱼&#xff0c;以下简单介绍了4种&#xff0c;具体如下&#xff1a; && 逻辑与运算&#xff08;&&&#xff09;是 AND 布尔操作。只有两个操作数…

elasticsearch修改es集群的索引副本数量

前言 最近es集群进行调整&#xff0c;从2节点变成了单节点。所以需要将集群模式改为单点模式&#xff0c;并需要将es 集群的全部索引副本个数改为0&#xff0c;不然会有很多未分配的分片&#xff0c;导致集群状态为 yellow。 具体实践 1. 先将现有的index的副本数量为0个 此…

[python matplotlib/plt字体有关问题总结]

# 字体下载网址 字体天下-提供各类字体的免费下载和在线预览服务 (fonts.net.cn) # 查看本地的字体 # 1 import numpy as np from matplotlib.font_manager import FontProperties from matplotlib.font_manager import fontManager x,y np.indices([10,10]).reshape(2,100…

windows个人电脑防护的知识体系

事前预防 锁屏密码 Windows提供了多种方式来设置和使用锁屏密码,以保护计算机免受未经授权的访问。以下是一些常见的Windows锁屏密码设置方式: 本地账户密码: 对于使用本地账户登录的Windows用户,您可以设置一个密码来保护您的账户。这个密码也将用于解锁计算机的锁屏。您…

Java 基础编程题目练习

基本数据类型和变量声明 声明两个整型变量 a 和 b&#xff0c;分别赋值为 8 和 5。然后输出它们的和、差、乘积和商。 字符串操作 声明两个字符串变量 str1 和 str2&#xff0c;分别赋值为 “Hello” 和 “Java”。将这两个字符串连接起来并输出结果。 类型转换 声明一个整数…

ChatGPT 与 Github Copilot 对于程序员的作用

文章目录 1.ChatGPT 是什么&#xff1f;2.ChatGPT 的用处&#xff1f;ChatGPT 写代码ChatGPT 定位问题ChatGPT 厘清概念ChatGPT 内容创作 3.Github Copilot 的用处&#xff1f;4.小结参考文献 1.ChatGPT 是什么&#xff1f; 是由 OpenAI 开发的一种基于 GPT&#xff08;Genera…

【Docker环境部署及基础命令操作】

CentOS7安装Docker&#xff08;使用yum安装&#xff09; 参考链接&#xff1a;https://developer.aliyun.com/mirror/docker-ce?spma2c6h.13651102.0.0.1ec41b11RJ4PKS #step 1:安装安装必要的一些系统工具 [rootnode1 ~]# yum install -y yum-utils device-mapper-persiste…

linux下c控制光标

最近在写进度条的需求&#xff0c;需要控制光标&#xff0c;用到下面的相关函数 // 清除屏幕#define CLEAR() printf("\033[2J")// 上移光标#define MOVEUP(x) printf("\033[%dA", (x))// 下移光标#define MOVEDOWN(x) printf("\033[%dB", (x))…