¿Existe una forma integrada de usar los tipos de propiedad para garantizar que una matriz de objetos que se pasa a un componente sea en realidad una matriz de objetos de una forma específica?
Tal vez algo como esto?
annotationRanges: PropTypes.array(PropTypes.shape({
start: PropTypes.number.isRequired,
end: PropTypes.number.isRequired,
})),
¿Me estoy perdiendo algo súper obvio aquí? Parece que esto sería muy buscado.
arrays
reactjs
react-proptypes
majorBummer
fuente
fuente
.isRequired
en cada propiedad deReact.PropTypes.shape
. Llegué aquí porque erróneamente por sentado que mediante el uso.isRequired
deReact.PropTypes.arrayOf
, yo no lo necesito en el interior. Para lograr la validación de cobertura completa, en realidad terminé aplicándolo directamenteReact.PropTypes.shape
también.arrayWithShape
es [] (una matriz vacía) No falla. siarrayWithShape
es {} (un objeto) falla. SiarrayWithShape
es[{dumb: 'something'}]
(una matriz sin los accesorios correctos) falla. Necesito que falle la validación siarrayWithShape
es una matriz vacía. Solo quiero que pase si es una matriz no vacía con objetos que tienen accesorioscolor
yfontsize
. ¿Qué me estoy perdiendo?Sí, debe usar en
PropTypes.arrayOf
lugar dePropTypes.array
en el código, puede hacer algo como esto:También para más detalles sobre los tipos de propiedad , visite Typechecking With PropTypes aquí
fuente
[undefined]
pasaría la validaciónY ahí está ... justo debajo de mi nariz:
De los propios documentos de reacción: https://facebook.github.io/react/docs/reusable-components.html
fuente
Hay una importación de taquigrafía ES6, puede hacer referencia. Más legible y fácil de escribir.
fuente
Si voy a definir los mismos tipos de props para una forma particular varias veces, me gusta resumirlo en un archivo de proptypes para que si la forma del objeto cambia, solo tengo que cambiar el código en un lugar. Ayuda a secar un poco la base de código.
Ejemplo:
fuente
Esta fue mi solución para proteger contra una matriz vacía también:
fuente