来自 child 组件的反应更改状态不起作用

React change state from child component not working

经过研究我找不到办法做到这一点,我想念一个小东西,或者不是。

我必须将 child 组件的状态更改为 false 但这不起作用,真正的问题是我不知道为什么。

要显示 child 并隐藏主要内容,我正在做这个工作

that = this;
    $('#example tbody').on('click', '.btnListEdit', function () {
      var data = table.row($(this).closest('tr')).data();
      that.setState({
        edit: true
      });
});

这是我的主要 React 组件

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} />
                ) : (

我正在传递我的“myprops”以在 child 组件

下方的这个组件中触发 Handle
 handlerFilters() {
    this.setState({
      edit: false
    });
  }

我的child组件

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>
    );
}

child 的处理程序不会将状态触发为 false 以在主程序中隐藏我的 child。

请提供任何知识

我想 EditCert 是您的子组件。如果是,那么您的问题是您将 handlerFilters 函数作为处理程序传递给子组件,但在子组件中您正试图通过 handlerFilters 访问它。

它应该是这样的:

function ExitHandler() {
    myprops.handler();
}

另外注意有错别字,一开始你写的是handlerFilters,在child你写的是handleFilters。