当前位置: 首页 > 知识库问答 >
问题:

回调防止setState

夹谷苗宣
2023-03-14

我有一个页面,有一个子组件用于浏览按钮,在父组件上,通过回调我用浏览文件设置状态。

export default class Attachment extends React.Component {
  state = {
    attachment: {},
  };

  handleAddAttachment = file => {
    this.setState({ attachment: file });
    this.props.handleChange('attachment', file); // this causes the previous line to not working.
  };

  render() {
    const { attachment } = this.state;

    return (
      <Fragment>
        <div>
          <div>
            Do you have
            <br />
            something to <LineBreak />
            show me?
          </div>
          <div css={attach}>Upload attachments here</div>
          <AttachmentButton  handleAddAttachment={this.handleAddAttachment} />
          <AttachedFile attachment={attachment} />
        </div>
      </Fragment>
    );
  }
}
  makeHandleChange = (pageName, change) => {
    this.setState({
      ticket: { ...this.state.ticket, [pageName]: change },
    });
  };

共有1个答案

越狐若
2023-03-14

我不知道这为什么不起作用,但您可能想尝试一个解决方案:将函数作为第二个参数传递给SetState。

请参见这里的示例:react set state callback正确传递参数的方法

 类似资料:
  • 问题内容: 我有这样的代码: 我的问题是,节点在运行时立即终止。它显示“ Icanhasclient”,但没有调用回调内的console.log。 (本例中的mysql是node- mysql 。 有什么办法可以使node.js在退出之前等待回调完成? 问题答案: 回调未排队 节点运行直到所有事件 队列 都为空。诸如以下的调用时,回调将添加到事件 队列 中 已执行。该调用是模块开发人员编写的代码的

  • 问题内容: 在IE上,我可以使用(非常不标准,但可以正常工作)的jQuery做到这一点 但是,是否可以以在Firefox上运行的方式或以跨浏览器的方式获得奖励呢? 作为记录: 什么也没做。 解决了问题,但使退格键在页面上不可用,这甚至比原始行为还差。 编辑:我这样做的原因是我不是在创建一个简单的网页而是一个大型应用程序。仅仅因为您在错误的位置按了退格键,就失去了10分钟的工作,这真是令人讨厌。通过

  • 由于我不能再使用复选框技巧,我不得不使用

  • 问题内容: 我试图避免Full GC(来自下面的gc.log示例)在生产中的Tomcat中运行Grails应用程序。关于如何更好地配置GC的任何建议? 14359.317:[完整GC 14359.317:[CMS:3453285K- > 3099828K(4194304K),13.1778420秒] 4506618K-> 3099828K(6081792K),[CMS彼尔姆:261951K-> 1

  • 问题内容: 我几乎可以肯定这是不可能的,但是值得一试。 我正在为某个工具编写命令行界面。我说的是一个调用另一个Java应用程序的Java应用程序。该工具在执行后调用,从而终止了我自己的执行环境。我不要 有什么方法可以忽略来电吗? 问题答案: 是的,使用SecurityManager可以实现。尝试以下 在您的班级中,使用以下调用: