首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-modal的奇怪行为

react-modal的奇怪行为
EN

Stack Overflow用户
提问于 2019-02-19 21:40:53
回答 1查看 86关注 0票数 0

我正在尝试构建一个使用react-modal来提供提示的测验。我需要在测验中加入多个模态。我是个新手,所以很有可能我犯了一个简单的错误。

我不确定这有什么关系,但我是用create-react-app构建的。

我的App.js看起来像这样:

代码语言:javascript
复制
import React, { Component } from 'react';
import HintModal from './hintModal';
import Modal from 'react-modal';
import './App.css';

Modal.setAppElement('#root');

class App extends Component {

  state = {
    modalIsOpen: false,
    hint: ''
  };

  openModal = (hint) => {
    this.setState({ modalIsOpen: true,  hint: hint });
  }

  closeModal = () => {
    this.setState({ modalIsOpen: false, hint: '' });
  }

  render() {
    return (
      <React.Fragment>
      <h1>Modal Test</h1>
      <h2>First Modal</h2>
      <HintModal 
        modalIsOpen={this.state.modalIsOpen}
        openModal={this.openModal}
        closeModal={this.closeModal}
        hint="mango"
      />
      <hr />
      <h2>Second Modal</h2>
      <HintModal 
        modalIsOpen={this.state.modalIsOpen}
        openModal={this.openModal}
        closeModal={this.closeModal}
        hint="banana"
      />
      </React.Fragment>
    );
  }
}

export default App;

hintModal.jsx看起来像这样:

代码语言:javascript
复制
import React, { Component } from 'react';
import Modal from 'react-modal';

const HintModal = (props) => {

    const {openModal, modalIsOpen, closeModal, hint} = props;

    return (
        <React.Fragment>
            <button onClick={ () => openModal(hint) }>Open Modal</button>
            <Modal
                isOpen={modalIsOpen}
                onRequestClose={closeModal}
                contentLabel="Example Modal"
            >
                <h2>Hint</h2>
                <p>{hint}</p>
                <button onClick={closeModal}>Close</button>
            </Modal>
            <p>We should see: {hint}</p>
         </React.Fragment>
    );

};

export default HintModal;

这就是问题所在:我需要根据传递给HintModal的hint属性来更改模式的内容。当我从<Modal>外部输出hint时,它的行为与预期一致,并显示了该属性的值。但是当我在<Modal>中输出hint时,它会返回"banana“(HintModal的第二个实例的hint属性的值)。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2019-02-19 21:58:00

您正在使用相同的状态和相同的功能来控制所有的模态,以打开和关闭模态。

您需要只有一个模式,然后在其中动态呈现消息,或者需要在状态中为每个模式存储一个modalIsOpen变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54767671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档