繁体   English   中英

错误:尝试运行 create-react-app 时出现 memory

[英]Error: out of memory when trying to run create-react-app

当我在 chrome (create-react-app) 中运行 npm start 时,加载需要一段时间,然后崩溃。 错误显示“内存不足”。 我清除了所有选项卡和缓存,并且由于其他应用程序运行良好,我已经能够判断错误出在代码中。 当我删除 Reserve_Button 组件时,应用程序运行正常。 我认为可能存在与 SetState 相关的某种 memory 泄漏,但我对 React 比较陌生,所以我能说的不多。

import React from "react";
import "./reserve_button.css";
// import Reserve_Form from "./Reserve_Form";
// import { connect } from "react-redux";
// import { submitreservation } from "../../Actions/index";
import Modal from "./modal";

class Button extends React.Component {
  state = {
    firstname: "",
    Lastname: "",
  };
  showmodal = {
    open: false,
  };

  // onSubmit = (formValues) => {
  //   this.props.submitreservation(formValues);
  // };

  showModal() {
    if (this.state.open) {
      return (
        <Modal
          open={this.state.open}
          onDismiss={() => this.setState({ open: false })}
          title="Modal Title"
          content="Modal Body"
          actions={<div className="ui button">Button</div>}
        />
      );
    }
  }

  render() {
    return (
      <div className="body">
        <Button
          onClick={() => this.setState({ open: !this.state.open })}
          className="neon-button"
        >
          Reserve session
        </Button>
        {this.showModal()}
      </div>
    );
  }
}
// <Reserve_Form onSubmit={this.onSubmit} />;
// export default connect(null, { submitreservation })(Button);
export default Button;

这是模式:

import React from "react";
import ReactDOM from "react-dom";

const Modal = (props) => {
  return ReactDOM.createPortal(
    <div onClick={props.onDismiss}>
      <div onClick={(e) => e.stopPropagation()}>
        <i onClick={props.onDismiss}></i>
        <div className="header">{props.title}</div>
        <div className="content">{props.content}</div>
        <div className="actions">{props.actions}</div>
      </div>
    </div>,
    document.querySelector("section")
  );
};
export default Modal;

模态的 CSS 文件中没有设置 class 名称,但我认为 CSS 不是问题的根源。

更新:当我控制台记录 this.state.open 时,它每秒打印 1000 次“false”

您可以对代码进行优化。 也许它会帮助修复错误:而不是

   <Button
      onClick={() => this.setState({ open: !this.state.open })}
      className="neon-button"
   >

当依赖于反应组件的前一个 state 时,使用前一个 state 来更新值。 它看起来像这样:

   <Button
        onClick={() => this.setState((prevState) => { open: !prevState.open })}
        className="neon-button"
   >

通过这样做,我们引用了 this.state.open 的前一个 state。 这一点特别重要,因为并非所有 state 更新都会立即发生,因此有可能在您的方法中引用 this.state.open 的旧值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM