React.FC 的衍生问题
来源:3-3 第一个组件 - ts为组件助力

ywang04
2021-01-28
老师 在实际项目中使用React.FC 遇到了如下问题
interface SubHeadingProps {
title: string;
...... //其他props
}
const SubHeading: FC<SubHeadingProps> = ({ title }) => {
return <div>SubHeading</div>
}
SubHeading.legacyName = 'ux-sub-heading';
export default SubHeading;
我们需要指明SubHeading对应的之前legacy component名字是什么 这里是ux-sub-heading
其实多一个legacyName这个prop对代码没有什么实质影响 只是对开发人员的一个提示
但是导致的问题是 vscode会报 Property ‘legacyName’ does not exist on type ‘FC’. ts(2339).
请问如果不想将legacyName添加到interface里去并且还想保留 SubHeading.legacyName = ‘ux-sub-heading’; 并且依旧使用FC的前提下 还有什么办法可以解决 Property ‘legacyName’ does not exist on type ‘FC’. ts(2339). 这个错误呢?
https://stackoverflow.com/questions/58867121/ts2339-property-whydidyourender-does-not-exist-on-type-fcbuttonprops 这个里面的解决方案我觉得并不完美 不知道老师有没有更好的解决方案。谢谢
写回答
1回答
-
同学你好 这个只能用一个别名来覆盖或者修改原始的 FC 类型了。比如
import { FC } from 'react'; export type FCWithLegacy<P = {}> = FC<P> & { legacyName?: string };
022021-01-30
相似问题