Esta es una pregunta mucho más simple que eventualmente resolverá mi pregunta aquí . Entonces, ¿cómo cambio este show que está en el Component A del Component B ?
Componente A:
const [show, setShow] = useState({ 1 : false, 2 : false, 3 : false, 4 : false, 5 : false, 6 : false })Componente B:
const handleShowPanel = (id) => { //how do I reset them here }No entiendo completamente la pregunta, pero intentaré escribir un código sobre lo que entiendo.
function Parent() { const panels = [0,1,2,3,4,5] const [panelsShowing, setPanelsShowing] = useState({ 0: false, 1: false, 2: false, 3: false, 4: false, 5: false, }) const togglePanelShowing = useCallback((index) => { setPanelsShowing(prevState => ({ ...prevState, [index]: !prevState[index] })) },[setPanelsShowing]) return ( <div> {panels.map((onePanel, panelIndex) => { return (<Panel isShowing={panelsShowing[panelIndex]} togglePanelShowing={() => togglePanelShowing(panelIndex)} />) })} </div> ) } const Panel = ({ isShowing, togglePanelShowing }) => isShowing ? ( <div> <button onClick={togglePanelShowing}>Toggle!</button> </div> ) : nullTambién veo que escribió que en realidad desea tener la función de alternar en el componente secundario, eso es simple, pase setShow al componente secundario y vuelva a crear la función de alternar dentro de él.
<Panel setPanelsShowing={setPanelsShowing} />Otra cosa que quiero decir es que si el Objeto de mostrar es todo lo que tiene y en realidad no tiene una matriz de elementos, entonces aún puede usar la misma función de alternar mostrar, pero en lugar de mapear a través de paneles, mapearía con Objeto. las entradas del objeto show y la clave serían el número y el valor sería el booleano si se muestra o no.
por ejemplo:
const toggleShowing = (number) => { setPanelsShowing(prevState => ({ ...prevState, [number]: !prevState[number] })) } // in the JSX return: Object.entries(panelsShowing).map(([number, isShowing]) => (<Panel isShowing={isShowing} toggleShowing={() => toggleShowing(number)}/>))tal vez si agregara más a su pregunta, podría entenderlo mejor, pero por lo que entiendo, tiene una matriz de algunos elementos y desea decidir si el elemento se muestra en función del índice. O tiene un objeto cuyas claves son el número y el valor es si se muestra o no.