【发布时间】:2021-12-02 06:33:31
【问题描述】:
我正在尝试使用我已经定义了这样的 prop 类型的组件
export type Props = {
variant: "green" | "red" | "grey" | "yellow";
};
组件是这样的
const Tag: FC<Props> = (props) => {
const { variant, ...rest } = props;
return (
<div
{...rest}
sx={{
bg: variant,
}}
/>
);
};
现在当我尝试像这样使用这个组件时
const statusColour: { [key: string]: string } = {
running: "green",
stopped: "red",
idle: "grey",
default: "green"
};
const variant = statusColour[value]
? statusColour[value]
: statusColour["default"];
<Tag variant={variant} />
variant 属性出现此错误
类型“字符串”不可分配给类型“绿色”| “红” | “灰色” | "黄色"'.ts(2322)
types.d.ts(2, 5):预期类型来自属性“variant”,该属性在此处声明为 type 'IntrinsicAttributes & TagProps & { children?: ReactNode; }'
(JSX 属性)变体:“绿色”| “红” | “灰色” | “黄色”
谁能帮我解决一下,谢谢
【问题讨论】:
-
第二个代码中的
Props是什么?是从第一个代码开始的吗? -
在第二个中,它是一个对象数组和一些其他数据。基本上,当我遍历数组时,我会得到稍后用于渲染
Tag组件的状态 -
就类型而言,因为我猜
react也提供了Props类型并且你也创建了它。那么,这是您的Props类型还是react's -
抱歉,您说的是哪些道具?标记一个或另一个组件。
-
FC<Props>
标签: reactjs typescript react-props