Estoy usando el patrón de composición para reaccionar. Entonces, por ejemplo, tengo este componente simple:
class Simple extends React.Component { render() { return <div>{this.props.text}</div>; } } Simple.propTypes = { text: React.PropTypes.string.isRequired };Ahora, tengo este componente mejorado:
class Enhanced extends React.Component { render() { return ( <div> <div>Hi, I'm the enhanced version</div> <Simple {...this.props} /> </div> ); } }Ahora, ¿cómo puedo especificar los tipos de propiedades para el componente mejorado? Yo podría hacer esto:
Enhanced.propTypes = { text: React.PropTypes.string.isRequired }; pero eso no es bueno porque tendré que enumerar todos los accesorios del componente Simple y cada vez que cambie esos accesorios, tendré que cambiarlos en Enhanced
propTypes son solo objetos JS normales. Puedes componerlos como quieras:
// Simple.js export const simplePropTypes = { text: React.PropTypes.string.isRequired } Simple.propTypes = simplePropTypes // Enhanced.js import Simple, { simplePropTypes } from './Simple' Enhanced.propTypes = { somethingElse: React.PropTypes.number, ...simplePropTypes }actualizar :
Debería poder usar los propTypes de la definición del componente directamente.
Enhanced.propTypes = { somethingElse: React.PropTypes.number, ...Simple.propTypes }