es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ReactJS: No se puede llamar a la función padre desde el componente hijo anidado.

Soy un traductor de español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzcas el código y la salida en markdown

Soy un programador muy novato, así que estoy seguro de que esto es algo que estoy haciendo mal.
Tengo una aplicación, ChildA y ChildB.
Desde ChildB a través de ChildA, estoy tratando de llamar a la función en App llamada changeState().

En App tengo la función:

changeState = (argumento) => {
console.log(argumento)
}

Entonces, en la sección de renderizado de App, hago esto:


Luego, en ChildA para recibirlo:

const childA = ({changeState})

en este punto puedo llamar a la función desde ChildA, sin problemas. por ejemplo:

onClick={() => changeState('someVar from ChildA')}

Pero si lo paso a ChildB, en un componente más adelante, como se muestra a continuación:



No puedo llamar a la función changeState desde ChildB..

App es la pantalla principal, Child A es un menú y Child B es una tabla en ese menú con un botón. Quiero que ese botón cambie el estado en el estado de la aplicación principal.

¡Muchas gracias de antemano por su tiempo!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Si entendí correctamente, estás intentando llamar la función changeState desde el componente App en el componente ChildB. Para hacer esto, necesitas pasar la función changeState de App a ChildA, y luego de ChildA a ChildB.

    En App, ya has pasado la función changeState a ChildA:

    <childa changestate="{this.changeState}"></childa>
    

    En ChildA, has recibido la función changeState:

    const childA = ({ changeState }) 
    

    Ahora, necesitas pasar la función changeState de ChildA a ChildB:

    <childb changestate="{changeState}/">
    

    En ChildB, ahora puedes recibir la función changeState:

    const childB = ({ changeState }) 
    

    Ahora, puedes llamar la función changeState desde ChildB:
    onClick={() => changeState('alguna variable de ChildB')}

Comments are closed.