Existe uma maneira interna de usar proptypes para garantir que uma matriz de objetos que está sendo passada para um componente seja realmente uma matriz de objetos de uma forma específica?
Talvez algo assim?
annotationRanges: PropTypes.array(PropTypes.shape({
start: PropTypes.number.isRequired,
end: PropTypes.number.isRequired,
})),
Estou perdendo algo super óbvio aqui? Parece que isso seria muito procurado.
arrays
reactjs
react-proptypes
majorBummer
fonte
fonte
.isRequired
em cada propriedade deReact.PropTypes.shape
. Cheguei aqui porque eu assumiu erroneamente que, usando.isRequired
onReact.PropTypes.arrayOf
, eu não precisava dele dentro. Para obter a validação completa da cobertura, acabei aplicando diretamenteReact.PropTypes.shape
também.arrayWithShape
for [] (uma matriz vazia), ele não falha. searrayWithShape
for {} (um objeto), ele falha. SearrayWithShape
for[{dumb: 'something'}]
(uma matriz sem os adereços corretos), ele falhará. Preciso falhar na validação searrayWithShape
houver uma matriz vazia. Eu só quero que ele passe se for uma matriz não vazia com objetos que tenham propscolor
efontsize
. o que estou perdendo?Sim, você precisa usar em
PropTypes.arrayOf
vez dePropTypes.array
no código, pode fazer algo assim:Também para obter mais detalhes sobre proptypes , visite Typechecking With PropTypes aqui
fonte
[undefined]
passaria a validaçãoE aí está ... bem debaixo do meu nariz:
Dos próprios documentos de reação: https://facebook.github.io/react/docs/reusable-components.html
fonte
Há uma importação abreviada de ES6, você pode consultar. Mais legível e fácil de digitar.
fonte
Se devo definir os mesmos proptypes para uma forma específica várias vezes, eu gostaria de abstraí-lo para um arquivo proptypes, para que, se a forma do objeto for alterada, só precise alterar o código em um único local. Ajuda a secar um pouco a base de código.
Exemplo:
fonte
Esta foi a minha solução para proteger contra uma matriz vazia também:
fonte