如何将 window 作为有效道具包含在 PropTypes 中?

How do I include window as a valid prop with PropTypes?

我正在尝试为 class 组件定义我的 PropTypes 列表。该组件可以接受常规 DOM 元素或 window 作为其属性值。目前,我有:

class FooContainer extends Component {
    static propTypes = {
        container: PropTypes.oneOfType([
            PropTypes.element,
            PropTypes.instanceOf(Element),
        ]),
    };
    static defaultProps = {
        container: window,
    };
    constructor(props: any) {
        super(props);
    }
    render() {
        return (
            <div />
        );
    }
}

但是,当组件默认使用window作为container prop时,会抛出如下错误:

Warning: Failed prop type: Invalid prop `container` supplied to `FooContainer`.

因此,用于 属性 且值为 window 的有效 PropType 是什么?

你可以做的是使用 oneOfType 并包含 window 对象构造函数的实例,Window:

PropTypes.instanceOf(window.constructor)

这将允许任何 Window 实例作为道具值。