【发布时间】:2019-10-18 08:00:36
【问题描述】:
我将编写一个类似 HOC 的函数来为 React 组件添加一个“可见”的道具。当 visible 属性设置为 false 时,render 函数只是 return null,必须保持状态。
我写了一个 JavaScript 版本,但仍然无法在 TypeScript 中重写它,因为我找不到向超级 React 组件添加 prop 的方法。
按照我的尝试:
import React from "react";
interface IVisibleProps {
/** @default true */
visible?: boolean;
}
const withVisible = <P>(Component: React.ComponentClass<P>): React.ComponentClass<P & IVisibleProps> => (
class VisibleComponent extends Component {
public static defaultProps = { visible: true, ...Component.defaultProps };
public static displayName = Component.displayName || Component.name;
public render() {
return this.props.visible ? super.render() : null;
}
}
);
export default withVisible;
我仍然找不到通过打字检查的方法。特别是如何将IVisibleProps添加到返回组件的通用P中。
【问题讨论】:
标签: reactjs typescript