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

307
Visualizações
Pasar mensajes entre componentes en React.js

Tenía algunas preguntas sobre la comunicación entre los componentes de React.js. Esto está en contexto sin el uso de redux. Así es como se ve mi jerarquía de componentes.

 App / \ / \ | | ▼ ▼ Board Dashboard | ▼ Cell

A continuación hay algunas suposiciones/patrones que utilizo para que los componentes se comuniquen.

  1. Si necesitamos pasar mensajes de un componente principal a componentes secundarios, lo hacemos usando accesorios. Por ejemplo, mientras creamos un Tablero, pasamos filas, columnas como accesorios.

     <Board rows={5} cols={5} />
  2. Si necesitamos pasar mensajes de un componente secundario a componentes principales, lo hacemos pasando una devolución de llamada. Por ejemplo, pasamos una devolución de llamada play() de Board a Cell. Dentro de Cell, configuramos el controlador onClick para que sea la devolución de llamada pasada, es decir, play().

     <Cell onClick={this.props.play(this.props.id)} />
  3. La pregunta abierta que tenía era cómo se pueden pasar mensajes entre componentes hermanos (ejemplo Dashboard to Cell). Un caso de uso es restablecer mi componente Board cuando se hace clic en un botón de reinicio dentro del componente Dashboard. Así es como se ve el botón de reinicio dentro del Tablero. Mi pregunta es una vez que el mensaje de reinicio llega al componente de la aplicación, ¿cuál es la mejor práctica para pasarlo a Board?

     <input type="button" value="reset" onClick={this.props.reset} />

Sería genial recibir comentarios sobre 1 y 2. Además, la mejor práctica para 3.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

redux

Esta es la razón exacta por la que Redux es tan genial. Si está utilizando Redux, todos estos componentes tienen una sola cosa en común; todos están leyendo sus valores desde el estado de la aplicación. El flujo que usaría es el siguiente:

  1. El usuario hace clic en el botón de reinicio que se encuentra dentro del componente del tablero

  2. La función asociada con ese clic solo hace una cosa. Despacha una acción "RESET_BOARD"

  3. En el reductor, la acción RESET_BOARD restablece el estado de la placa.

  4. Cuando se vuelve a renderizar, el tablero se pasa en accesorios, al igual que antes, solo se le pasa el estado vacío.

Sin reducción

Si no tiene redux a mano, entonces el enfoque de devolución de llamada del padre es la forma sensata de hacerlo. Si está manteniendo el estado en el componente de la App , la aplicación luego restablece su estado y activa una nueva representación manualmente. Esto hará que el tablero se vuelva a renderizar con diferentes accesorios.

over 4 years ago · Santiago Trujillo Relatório

0

Pero también es restricción; la comunicación entre dos componentes está restringida en 3 casos:

  1. Actualizaciones de los padres Niño:

  2. El niño actualiza al padre:

  3. hermanos (Hermanos) se actualizan entre sí (hermano)


Busquemos su pregunta ahora. Su pregunta es sobre el tercer caso:

La idea principal es hacer que el abuelo ( App ) sea un proxy para transferir la comunicación.


 App / \ / \ | | ▼ ▼ Board Dashboard | ▼ Cell

Tablero.js

 reset(event) { //.... local calls (concerning Dashboard or its children ) // then , external calls (concerning outside Dashboard) if(this.props.onReset) this.props.onReset(event); } <input type="button" value="reset" onClick={this.reset} />

App.js (el 1ˢᵗ abuelo entre [ Dashboard , Board>Cell ]):

 onDashboardReset(event) { this.setState({dashboardIsReset: true}) } <Dashboard onReset={this.onDashboardReset} /> <Board dashboardIsReset={this.state.dashboardIsReset} />

Tablero.js:

 // ... has props `dashboardIsReset` and forward it to its children (`Cell`) if needed
over 4 years ago · Santiago Trujillo 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