Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

185
Visualizações
¿Cómo puedo proporcionar los PropTypes para un componente interno anidado?

Tengo un componente que es bastante complejo, así que lo construyo a partir de componentes anidados. Simplificado:

 export function BlockProvideFeedback(props) { const handleSelect = (event) => console.log(event); const Form = (props) => ( <> <RadioList selected={props.selected} /> <Button onClick={handleSelect} /> </> ); const Message = () => ( <p>Thanks for the feedback</p> ); if (props.feedbackStatus == 'agreed') { return(<Form selected='done'/>); if (props.feedbackStatus == 'pending') { return(<Form selected='needswork'/>); } else { return(<Message/>); } }; BlockProvideFeedback.propTypes = { feedbackStatus: PropTypes.string.isRequired, };

El linter está, con razón en mi opinión, señalando que props.selected en Form(props) necesita propTypes. Pero no sé dónde y cómo proporcionarlos. Falta 'seleccionado' en la validación de accesorios .

Intenté lo obvio:

 BlockProvideFeedback().Form.propTypes { //... }

Pero eso arroja errores porque estoy instanciando el componente (llamando a la función) sin el contexto, los accesorios, los proveedores, etc.

¿Cómo pongo selected para mi componente anidado, en una validación de accesorios?

¿O tal vez estoy haciendo algo más terriblemente mal: por ejemplo, mi configuración completa de anidar el tal vez es tan poco reactiva que las herramientas, como los linters, fallarán sin poder resolverlo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si Form y Message no están destinados a ser compartidos y reutilizados, los convertiría en "funciones de representación"; algo como:

 export function BlockProvideFeedback(props) { const handleSelect = (event) => console.log(event); const renderForm = (selectedVal) => ( <> <RadioList selected={selectedVal} /> <Button onClick={handleSelect} /> </> ); const renderMessage = () => ( <p>Thanks for the feedback</p> ); if (props.feedbackStatus == 'agreed') { return renderForm('done'); if (props.feedbackStatus == 'pending') { return renderForm('needswork'); } else { return renderMessage(); } }; BlockProvideFeedback.propTypes = { feedbackStatus: PropTypes.string.isRequired, };

No es realmente una respuesta a su pregunta, lo sé, pero me parece que este caso puede ser una especie de "problema XY".

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda