Tengo un componente padre, con un hijo, que también tiene un hijo.
Parent |-Child One (child of parent) |-Child Two (child of child)Cuando se define un valor en el hijo dos, estoy pasando ese valor usando una devolución de llamada al hijo uno, pero también quiero pasar el mismo valor al padre. Desafortunadamente, usar una devolución de llamada similar parece arrojar el error de que el identificador ya ha sido declarado.
Consulte la caja de arena para ver exactamente cómo estoy tratando de implementarlo.
¿Cómo puedo hacer eso?
Dado que el componente ChildTwo necesita actualizar tanto su ChildOne principal como la App principal. Esto se puede hacer de dos formas.
Una forma es que cree otro estado en ChildOne y pase su función de estado setValueTwo junto con la función de estado de la App valueTwoPass a ChildTwo . ChildTwo ahora puede establecer valores para padres y abuelos.
El segundo método es que no creas otro estado en ChildOne . Dado que debe mostrar el mismo valor para el componente principal y el abuelo, puede pasar el valor de estado valueTwo a ChildOne de esta manera
<ChildOne valueOnePass={valueOnePass} valueTwoPass={valueTwoPass} valueTwo={valueTwo} /> Cuando ChildTwo actualiza el valor de estado de la App abuelo, valueTwo también cambia en ChildOne ya que App también pasa valueTwo como sus accesorios.
Luego, simplemente use la variable valueTwo en ChildOne en lugar de crear un nuevo estado y pasar a ChildTwo .
Es porque el nombre de los accesorios y el nombre de su función es el mismo, así que actualice el nombre de la función a algo onValueTwoPass