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

225
Visualizações
Reutilización del componente React: el mismo código para envolver 2 componentes diferentes

Tengo un componente de encabezado que se usa en otros 2 componentes que los envuelven cada vez con el mismo código. ¿Hay alguna lógica que se pueda implementar para envolverlos y usar ese código solo uno?

 export default function SameCodeToWrapComponent1() { . . . return ( <ThemeProvider theme={appTheme}> <div className={classes.root}> <CssBaseline /> <AppBar > <Toolbar className={classes.toolbar}> ... </Toolbar> </AppBar> <main className={classes.content}> <div className={classes.appBarSpacer} /> <Container maxWidth="lg" className={classes.container}> <Grid container spacing={3}> <Grid item xs={12}> <Paper className={classes.paper}> <MyComponent1 /> </Paper> </Grid> </Grid> </Container> </main> </div> </ThemeProvider> ); }

Y en otro componente que uso

 export default function SameCodeToWrapComponent2() { . . . return ( <ThemeProvider theme={appTheme}> <div className={classes.root}> <CssBaseline /> <AppBar > <Toolbar className={classes.toolbar}> ... </Toolbar> </AppBar> <main className={classes.content}> <div className={classes.appBarSpacer} /> <Container maxWidth="lg" className={classes.container}> <Grid container spacing={3}> <Grid item xs={12}> <Paper className={classes.paper}> <MyComponent2/> </Paper> </Grid> </Grid> </Container> </main> </div> </ThemeProvider> ); }

Como puede ver, ambos llaman MyComponent1 y MyComponent2 en un punto determinado, pero son la misma parte del código en 2 componentes diferentes

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

0

sí, debe crear un componente Wrapper y usar su accesorio secundario para representar el contenido dentro de él. esto se llama composición de componentes y hay un artículo famoso en el sitio web de reacción al respecto aquí . su componente contenedor se vería así:

 const Wrapper = ({ children }) => { return ( <ThemeProvider theme={appTheme}> <div className={classes.root}> <CssBaseline /> <AppBar> <Toolbar className={classes.toolbar}>...</Toolbar> </AppBar> <main className={classes.content}> <div className={classes.appBarSpacer} /> <Container maxWidth="lg" className={classes.container}> <Grid container spacing={3}> <Grid item xs={12}> <Paper className={classes.paper}> {children} </Paper> </Grid> </Grid> </Container> </main> </div> </ThemeProvider> ); };

entonces lo usarías así:

 const AnyComponent = () => { return <Wrapper>Your non-reusable content goes here</Wrapper> }
about 4 years ago · Juan Pablo Isaza Relatório

0

prueba esto:

 export default function SameCodeToWrapComponent1({ customComponent }) { . . . return ( <ThemeProvider theme={appTheme}> <div className={classes.root}> <CssBaseline /> <AppBar > <Toolbar className={classes.toolbar}> ... </Toolbar> </AppBar> <main className={classes.content}> <div className={classes.appBarSpacer} /> <Container maxWidth="lg" className={classes.container}> <Grid container spacing={3}> <Grid item xs={12}> <Paper className={classes.paper}> {customComponent} </Paper> </Grid> </Grid> </Container> </main> </div> </ThemeProvider> ); }

Pasa esta propiedad customComponent y de esa manera puede agregar un componente personalizado (el nombre de la propiedad puede cambiar)

Luego llama a su componente y pasa los elementos secundarios que desea agregar.

De este modo:

 <SameCodeToWrapComponent1 customComponent={<MyComponent />} />
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