React: React.PropTypes.node debe aceptar el componente sin estado (función)

Creado en 22 nov. 2015  ·  3Comentarios  ·  Fuente: facebook/react

Acabo de reemplazar algunos componentes de reacción que se definieron usando clases es6 y ahora recibo advertencias sobre mi componente de reacción sin estado (que son solo funciones) que no es un ReactNode.

Warning: Failed propType: Invalid prop `Loader` supplied to `Picture`, expected a ReactNode.

Estaba validando algunos componentes usando React.PropTypes.node , pero ahora necesito usar PropTypes.oneOfType([ PropTypes.node, PropTypes.func ]) que parece un poco largo para decir "esto puede ser cualquier cosa que se pueda representar como un componente" (que es lo que ProTypes.node Se supone que

del documento

    // Anything that can be rendered: numbers, strings, elements or an array
    // (or fragment) containing these types.
    optionalNode: React.PropTypes.node,

¿Tal vez se deberían agregar func ? ¿O hay alguna razón por la cual node no maneja func también?

Comentario más útil

¿Puedes mostrar cómo estabas usando esto? No creo que las clases de componentes deban haber sido válidas para node tampoco. Se supone que node acepta cualquier cosa que se pueda representar. Las clases no se pueden representar directamente: pasaría un elemento con el conjunto de tipos.

Todos 3 comentarios

¿Qué hay de agregar un nuevo validador propType? Algo como

propTypes: {
    optionalComponent: React.PropTypes.component
}

donde el componente tendría forma de

PropTypes.oneOfType([ PropTypes.node, PropTypes.func ])

o algo similar. En mi opinión, es bastante peligroso dejar que las personas pasen funciones, pero no estoy seguro de cómo hacer una mejor validación. Leer function.toString parece un truco gigantesco que no funcionaría después de la minificación, pero esta es la única opción que conozco.

¿Puedes mostrar cómo estabas usando esto? No creo que las clases de componentes deban haber sido válidas para node tampoco. Se supone que node acepta cualquier cosa que se pueda representar. Las clases no se pueden representar directamente: pasaría un elemento con el conjunto de tipos.

Ay Dios mío. Tienes mucha razon. Me siento estupido. Supongo que estaba validando algo de mala manera. Lo siento por el ruido.

¿Fue útil esta página
0 / 5 - 0 calificaciones