Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的模态组件在另一个文件中,我正试图从另一个组件打开它_Javascript_Reactjs_Dom Events_React Modal - Fatal编程技术网

Javascript 我的模态组件在另一个文件中,我正试图从另一个组件打开它

Javascript 我的模态组件在另一个文件中,我正试图从另一个组件打开它,javascript,reactjs,dom-events,react-modal,Javascript,Reactjs,Dom Events,React Modal,BuySectionItem.js TicketModal.js 我添加了更多的代码,因为我还需要处理关键事件的指导。当我单击escape时,这个关键事件应该从屏幕上删除模式,但它似乎不起作用。当TicketModal呈现时,您正在调用toggleTicketModal函数,请这样调用它 <button onClick={()=>toggleTicketModal()}>close</button> 这样就可以了。当TicketModal呈现时,您正在调用togg

BuySectionItem.js

TicketModal.js


我添加了更多的代码,因为我还需要处理关键事件的指导。当我单击escape时,这个关键事件应该从屏幕上删除模式,但它似乎不起作用。

当TicketModal呈现时,您正在调用toggleTicketModal函数,请这样调用它

<button onClick={()=>toggleTicketModal()}>close</button>

这样就可以了。

当TicketModal呈现时,您正在调用toggleTicketModal函数,请按如下方式调用它

<button onClick={()=>toggleTicketModal()}>close</button>

这样就可以了。

您的代码中有很多错误。 模态中的按钮onclick处理程序应如下所示

    <button onClick={toggleTicketModal}>close</button>
另外,在您的案例中,BuySectionItem.js的主容器几乎没有问题。 1.render方法中没有返回。 2.条件呈现未正确完成,您从未基于modalIsOpen状态调用outPutBuyButton 3.您使用的名称是isModalOpen,而不是modalIsOPen,输入错误

这是工作代码。根据您的需要进行修改


您的代码中有许多错误。 模态中的按钮onclick处理程序应如下所示

    <button onClick={toggleTicketModal}>close</button>
另外,在您的案例中,BuySectionItem.js的主容器几乎没有问题。 1.render方法中没有返回。 2.条件呈现未正确完成,您从未基于modalIsOpen状态调用outPutBuyButton 3.您使用的名称是isModalOpen,而不是modalIsOPen,输入错误

这是工作代码。根据您的需要进行修改

优化代码

class BuySectionItem extends React.Component {
  constructor() {
    super();
    this.state = {
      showModal: false
    };
  }

  handleOpenClose = () => {
    this.setState(prev => ({ showModal: !prev.showModal }));
  };
  render() {
    return (
      <div>
        <button onClick={this.handleOpenClose}>Trigger Modal</button>
        <Modal
          isOpen={this.state.showModal}
          contentLabel="Minimal Modal Example"
        >
          <TicketModal handleOpenClose={this.handleOpenClose} />
        </Modal>
      </div>
    );
  }
}
class TicketModal extends React.Component {
  render() {
    const { handleOpenClose } = this.props;
    return (
      <div>
        <button onClick={handleOpenClose}>Close Modal</button>
        <hr />
        <p>Welcome to opened model</p>
      </div>
    );
  }
}
优化代码

class BuySectionItem extends React.Component {
  constructor() {
    super();
    this.state = {
      showModal: false
    };
  }

  handleOpenClose = () => {
    this.setState(prev => ({ showModal: !prev.showModal }));
  };
  render() {
    return (
      <div>
        <button onClick={this.handleOpenClose}>Trigger Modal</button>
        <Modal
          isOpen={this.state.showModal}
          contentLabel="Minimal Modal Example"
        >
          <TicketModal handleOpenClose={this.handleOpenClose} />
        </Modal>
      </div>
    );
  }
}
class TicketModal extends React.Component {
  render() {
    const { handleOpenClose } = this.props;
    return (
      <div>
        <button onClick={handleOpenClose}>Close Modal</button>
        <hr />
        <p>Welcome to opened model</p>
      </div>
    );
  }
}


将类BuySectionItem extends React.PureComponent{更改为类BuySectionItem extends React.Component{,Pure Component是无状态的,因此如果需要状态,请使用Component仍然不起作用当TicketModal呈现时,如果要调用toggleTicketModal函数,请像这样调用toggleTicketModal}>关闭此将doOmgg非常感谢。请将此添加为答案。非常感谢它的工作。不客气,我在答案中添加了,请将其标记为已解决。更改类BuySectionItem extends React.PureComponent{到类BuySectionItem extends React.Component{,纯组件是无状态的,因此如果您需要state,请使用Component。如果仍然不起作用,请在TicketModal呈现时调用toggleTicketModal函数,请像这样调用toggleTicketModal}>关闭此将doOmgg非常感谢。请您将此添加为答案。非常感谢它的工作。不客气,我在答案中添加了,请将其标记为已解决。您可以简单地说,关闭,因为ToggleTicketModel本身就是一个函数。在某些情况下,您的函数需要参数,因此最好在代码中使用统一的标准。我不同意bein但是如果我们想在调用ToggleTicketModel之前对事件执行一些操作,那么您的方法可能会有所帮助。在上面的代码中,ToggleTicketModel没有任何参数,因为它处理的是二进制数据,但是在需要向函数传递不同参数的情况下,为什么要使用不同的编码风格,这就是我所说的uniform.Of当然ToggleTicketModel在ButtonSectionItem中定义时有参数。您可以简单地说,close因为ToggleTicketModel本身就是一个函数。在某些情况下,您的函数需要参数,所以最好在代码中使用统一的标准。我不同意统一,但如果我们想对事件执行某些操作,您的方法可能会有所帮助在调用toggleTIcketModal之前。在上面的代码中,toggleTIcketModal没有任何参数,因为它处理的是二进制数据,但是在需要向函数传递不同参数的情况下,为什么要使用不同的编码风格,这就是我所说的统一。当然,toggleTIcketModal在Button中定义时有参数nSectionItem.1.这是一个错误,很抱歉,我在编辑代码时出错了。2.outputBuyButton正在另一个组件中调用,这就是为什么您无法看到该调用3.这是另一个打字错误,很抱歉,我将更改所有这些,这是针对sandbox1上编辑的代码。这是一个错误,很抱歉,我在编辑代码错误。2.outputBuyButton正在另一个组件中被调用,这就是为什么你看不到该调用3.这是另一个输入错误哦,对不起,我将更改所有这些,这是针对上编辑的代码sandbox@Kavyanagendra他只是展示了方法,而不是实际的代码。请耐心阅读:我看了现场演示并尝试了implementing它。在那之后,我只放了我的评论好的。我以为他有工作现场演示,按照你的要求打开和关闭它。简单地保持这种噪音对我不起作用,因为评论并不能证明他的努力是正确的。这就是我为什么说的。没关系:让我们结束这个循环。这只是一个建议。真的,对不起,我会做得更多specific@Kavyanagendra他只是展示了一种方法,而不是实际的代码。请耐心阅读:我看了现场演示并尝试实现它。在那之后,我只发表了我的评论。我认为他有一个正在工作的现场演示,可以打开模式和关闭模式
这是根据你的要求。仅仅保持这种喧闹对我来说是不起作用的,作为评论并不能证明他的努力是合理的。这就是我说的原因。没关系,让我们结束这个循环。这只是一个建议。是的,我很抱歉,我会说得更具体一些