📜  键入传递的组件 typescript react - TypeScript (1)

📅  最后修改于: 2023-12-03 15:42:09.665000             🧑  作者: Mango

TypeScript与React中的键入传递组件

在React应用程序中,通常需要将属性(prop)从一个组件传递到另一个组件。 TypeScript能够在这方面提供巨大的帮助,让您可以在编写代码时更轻松地识别和解决错误。本文将介绍在TypeScript和React应用程序中使用键入传递组件的方法。

定义键入传递组件

首先,将一个接口定义为该组件所期望的属性集。例如,一个简单的按钮组件可以期望以下属性:

interface ButtonProps {
    text: string;
    onClick: () => void;
} 

然后,将该接口传递给React.FC函数,此函数用于定义组件的类型以及如何渲染它。在这个例子中,组件将显示一个按钮并在点击时调用onClick函数:

import React from 'react';

const Button: React.FC<ButtonProps> = ({ text, onClick }) => {
    return (
        <button onClick={onClick}>
            {text}
        </button>
    );
};

最后,在组件中使用定义的属性:

const App: React.FC = () => {
    const handleClick = () => {
        alert('Button clicked!');
    };

    return (
        <div>
            <Button text="Click me" onClick={handleClick} />
        </div>
    );
};
默认属性

您可以在组件类型中定义默认属性,以指定在不传递某些属性时使用的值。例如,如果Button组件的文本未定义,则将使用默认值"default text":

interface ButtonProps {
    text?: string;
    onClick: () => void;
}

const Button: React.FC<ButtonProps> = ({ text = 'default text', onClick }) => {
    return (
        <button onClick={onClick}>
            {text}
        </button>
    );
};
子元素

某些组件(例如面板或选项卡)需要包含子元素。 若要在TypeScript中键入此类组件,您可以使用React的ReactNode类型:

interface PanelProps {
    title: string;
    children: React.ReactNode;
}

const Panel: React.FC<PanelProps> = ({ title, children }) => {
    return (
        <div>
            <h2>{title}</h2>
            <div>{children}</div>
        </div>
    );
};

const App: React.FC = () => {
    return (
        <div>
            <Panel title="My panel">
                <Button text="Click me" onClick={() => alert('Button clicked!')} />
            </Panel>
        </div>
    );
};
结论

TypeScript为React开发提供了极大的便利。在定义类型时使用键入传递组件可以帮助捕获错误,并提供代码提示和自动完成功能。对于大型React应用程序而言,这些优势都是非常值得的。