2017-07-03 23 views
1

我想爲類組件定義PropTypes的列表。該組件可以接受常規DOM元素或window作爲其prop屬性值。目前,我有:如何使用PropTypes將窗口作爲有效的道具?

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作爲容器道具,下面的錯誤被拋出:

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

因此,什麼是使用的有效PropType物業值爲window

+0

也許'PropTypes.instanceof(Window)'? – Li357

+0

@AndrewLi,'Window'是未定義的,如果我嘗試使用'window'代替,我得到'失敗的道具類型:'instanceof'的右手邊不可調用。我猜'窗口'不是可視的?或者沒有'instanceof'方法。 – haxxxton

+0

'instanceOf(window.constructor)' – Li357

回答

0

你可以做的是使用oneOfType和包括window對象的構造函數的一個實例,Window

PropTypes.instanceOf(window.constructor) 

這將允許任何Window實例作爲道具的價值。

相關問題