Dado un componente simple que representa a sus hijos:
class ContainerComponent extends Component {
  static propTypes = {
    children: PropTypes.object.isRequired,
  }
  render() {
    return (
      <div>
        {this.props.children}
      </div>
    );
  }
}
export default ContainerComponent;
Pregunta: ¿Cuál debería ser el propType del prop de los niños?
Cuando lo configuro como un objeto, falla cuando uso el componente con varios hijos:
<ContainerComponent>
  <div>1</div>
  <div>2</div>
</ContainerComponent>
Advertencia: No se pudo tipo prop: prop no válido
childrende tipoarraysuministrado paraContainerComponent, que se esperaobject.
Si lo configuro como una matriz, fallará si le doy solo un hijo, es decir:
<ContainerComponent>
  <div>1</div>
</ContainerComponent>
Advertencia: Tipo de utilería fallido: hijos de utilería no válidos del tipo de objeto suministrado a ContainerComponent, matriz esperada.
Por favor avise, ¿no debería molestarme en hacer una verificación de propTypes para elementos secundarios?
                    
                        reactjs
                                jsx
                                react-proptypes
                                
                    
                    
                        d3ming
fuente
                
                fuente

nodeRespuestas:
Pruebe algo como esto utilizando
oneOfTypeoPropTypes.nodeo
fuente
childrendel tipoobject... esperaba una matriz."children: PropTypes.nodeque funcionó para ambos casos. Gracias por las sugerencias =)React.PropTypes.nodedescribe cualquier objeto renderizable.PropTypes.node. Eso maneja la siguiente corrección: nada, cadena, elemento único, varios elementos, fragmento, componente.Para mí depende del componente. Si sabe con qué necesita que se rellene, debe intentar especificar exclusivamente o varios tipos utilizando:
Sin embargo, la mayoría de las veces, con componentes más genéricos que pueden tener muchos tipos de hijos, estoy feliz de usar:
Si desea hacer referencia a un componente Reaccionar, entonces estará buscando
A pesar de que,
describe todo lo que se puede representar: cadenas, números, elementos o una serie de estas cosas. Si esto te conviene, este es el camino.
fuente
Proptypes.anyEs un tipo muy común. Eslint no está contento con eso.La documentación de PropTypes tiene lo siguiente
Por lo tanto, puede usar
PropTypes.nodepara buscar objetos o matrices de objetosfuente
Las respuestas aquí no parecen abarcar la verificación exacta de los niños.
nodeyobjectson demasiado permisivos, quería verificar el elemento exacto. Esto es lo que terminé usando:oneOfType([])para permitir niños solos o en conjuntoshapeyarrayOf(shape({}))para soltero y conjunto de niños, respectivamenteoneOfpara el elemento hijo en síAl final, algo como esto:
Este problema me ayudó a resolver esto más claramente: https://github.com/facebook/react/issues/2979
fuente
Si desea hacer coincidir exactamente un tipo de componente, marque esto
Si desea hacer coincidir exactamente algunos tipos de componentes, marque esto
fuente
Pruebe un propTypes personalizado:
Violín
Mostrar fragmento de código
fuente
Ejemplo:
Imagen: muestra un error en la consola si el tipo esperado es diferente
fuente