Cuerpo principal: lo que estoy tratando de hacer es pasar una función del elemento secundario que contiene un parámetro de las propiedades dinámicas de Childs para poder acceder a su estado indexado de matriz.
export default function MMGrid(props){ const [tiles, setTiles] = useState(tileSetSetter);//Generate Tiles Array. const [test, setTest] = useState(); function resetTiles(){setTiles(tileSetSetter())}; function clickTile(e) { let id = e.target.id;<<<<<<<<======== setTest(id) // produces undefined } return( <View style={styles.body}> <Text>{JSON.stringify(test+"Aa")}</Text> <MMTile clickTile={resetTiles} /> {tiles.map((tile,index) => { return ( <MMTile key = {index} id = {tile.id} <<<<<<<<========== tileColor = {tile.color} match= {tile.match} isOpen={tile.isOpen} clickTile={(e)=>clickTile(e)} />) }) } </View> ) };Niño: es solo un shell para el mapeo de la matriz en el padre.
export default function MMTile(props) { const {color, match, id, isOpen, clickTile} = props; function openCheck(){ if (props.isOpen) { return props.tileColor } else {return null} } return ( <TouchableOpacity style={styles.tile} onPress={clickTile}> <View style={[styles.tilecenter, openCheck()]} > <Text style={{fontSize : 8}}>{JSON.stringify(props)}</Text> </View> </TouchableOpacity> ) }Puede probar el siguiente código a continuación,
import React ,{useState} from 'react' import Item from './Item' export default function PassParentChild() { const [title,setTitle] = useState("Hello You") const ChangeTitle = (value)=>{ setTitle(value); } return ( <div> <h1>Parent:{title}</h1> <Item title={title} changeTitle = {ChangeTitle} /> </div> ) } import React from 'react' export default function Item(props) { return ( <div> <span>Child :{props.title}</span> <button onClick = {()=>props.changeTitle("Hello you you you")}>Change Title</button> </div> ) }El artículo: PASAR DATOS ENTRE COMPONENTES DE REACCIÓN
Así es como lo hice
Agregué los accesorios que necesitaba como parámetro a la función onPress() en Childs, así que es así.
onPress={()=>props.clickTile(props.id)}y luego lo pasó tal como está en el método Parent
function clickTile(id) { setTest(id) }