2017-05-26 77 views
2

我有這些PropTypes設置:陣營PropTypes不顯示需要

Select.propTypes = { 
    onSelect: PropTypes.func.isRequired, 
    data: PropTypes.arrayOf(PropTypes.shape({ 
    key: PropTypes.string.isRequired, 
    value: PropTypes.string.isRequired 
    }).isRequired).isRequired 
} 

onSelectdata都將顯示。如果沒有定義的錯誤。但是,數組中的對象的形狀不適用於數據。我可以使用data={[]},它不會出錯。

有什麼我在這裏失蹤?謝謝

+0

如果指定一個陣列內一個空對象,它驗證爲true,那麼也 –

+0

'...支柱型:如在Select'所需的丙數據[0]的.key被標記。不,那是有效的。所以'arrayOf'上的isRequired似乎並不包含在內? – dzm

+0

如果您想要針對空數組進行驗證,則必須編寫自定義PropType。 –

回答

1

我覺得這是預期。當支柱是一個必需的陣列可以傳遞一個空數組或與給定類型的元件的陣列。不僅爲形狀,甚至PropTypes.arrayOf(PropTypes.number).isRequired它會同時考慮[][9]爲有效但不["9"]。它不」做出改變,即使您使用PropTypes.arrayOf(PropTypes.number.isRequired).isRequired

基本上,不能指定元件的最小數量應爲一個陣列或限制分配與丙類型空數組。

+0

我認爲你是對的。對我來說夠好,謝謝。 – dzm