2015-10-12 42 views
2

鑑於這個人爲的例子,componentType的最佳定義是什麼?如何最好地定義一個propType來接受作爲道具的組件?

const componentType = PropTypes.oneOfType([ 
    PropTypes.shape({render: PropTypes.func.isRequired}), // React.createClass/React.Component ...better way to describe? 
    PropTypes.func,          // Stateless function 
    // others? 
]); 

const Selector = React.createClass({ 

    propTypes: { 
     components: PropTypes.arrayOf(componentType).isRequired, 
     index:  PropTypes.number.isRequired, 
    }, 

    render() { 
     const Component = this.props.components[this.props.index]; 
     return (
      <Component /> 
     ); 
    } 
}); 

PropTypes.node是不是我要找的;它的用法是這樣的:

<Selector components={[<ThingA />, <ThingB />]} /> 

,而我想要的東西,看起來像:

<Selector components={[ThingA, ThingB]} /> 

我想傳遞的類型,而不是實例。

回答

2

我crossposted到GitHub上,得到了this answer。因此,它應該是:

const componentType = PropTypes.oneOfType([PropTypes.string, PropTypes.func]) 

func從「經典」的反應的組分,ES6類和無狀態的功能部件涵蓋類型。 string涵蓋了本地元素案例(例如「div」)。

0

您正在尋找arrayOfelement的組合。 propType的列表可以在文檔的Reusable Components頁面找到。

我希望它會是這個樣子:

components: React.PropTypes.arrayOf(React.PropTypes.element) 
相關問題