如何将窗口包含为PropTypes的有效道具?

时间:2017-07-03 03:50:07

标签: reactjs react-proptypes

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

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作为容器prop时,会抛出以下错误:

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

因此,有效的PropType用于值为window的属性?

1 个答案:

答案 0 :(得分:1)

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

PropTypes.instanceOf(window.constructor)

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