Después de investigar, no puedo encontrar la manera de hacer esto, me falta, creo, una pequeña cosa, o no.
Tengo que cambiar el estado a false del componente secundario, pero esto no funciona y el verdadero problema es que no sé por qué.
Para mostrar al niño y ocultar lo principal que estoy haciendo, esto funciona
that = this; $('#example tbody').on('click', '.btnListEdit', function () { var data = table.row($(this).closest('tr')).data(); that.setState({ edit: true }); });Este es mi componente de reacción principal
public render(): React.ReactElement<ICertificatesListProps> { return ( <div> { this.state.tableItems.length === 0 ? ( <LinearProgress /> ) : ( <div> { this.state.edit ? ( <EditCert description={undefined} context={this.props.context} myprops={this.state} handler={this.handlerFilters} /> ) : (Estoy pasando mis "myprops" para activar el identificador en este componente a continuación en el componente secundario
handlerFilters() { this.setState({ edit: false }); }Mi componente hijo
import * as React from 'react'; export const EditCert = (myprops) => { function ExitHandler() { myprops.handleFilters(); } return ( <div> <Select labelId="selPrintedLabel" id="selPrinted" label="Printed" fullWidth={true} variant="outlined" // value={this.state.selectYesNo} // defaultValue={this.state.selectYesNo} // onChange={e => this.setState({ selectYesNo: typeof e.target.value === 'string' ? e.target.value : '' })} > <MenuItem value=""> <em>All</em> </MenuItem> <MenuItem value={"1"}>Yes</MenuItem> <MenuItem value={"0"}>No</MenuItem> </Select> <Button onClick={ExitHandler} size="small" style={{ "width": "100%" }} id="fireModal" variant="contained" >Certificate labels</Button> </div> ); }El controlador para el niño no activa el estado a falso para ocultar a mi hijo en el principal.
Por favor amablemente proporcione cualquier conocimiento
Supongo que EditCert es su componente secundario. En caso afirmativo, su problema es que está pasando la función handlerFilters como controlador al elemento secundario, pero en el componente secundario está intentando acceder a él mediante handlerFilters.
Debe tener un aspecto como este:
function ExitHandler() { myprops.handler(); }También tenga en cuenta que hay un error tipográfico, al principio escribió handlerFilters, en el niño escribió handleFilters.