我正在尝试构建一个使用react-modal来提供提示的测验。我需要在测验中加入多个模态。我是个新手,所以很有可能我犯了一个简单的错误。
我不确定这有什么关系,但我是用create-react-app构建的。
我的App.js看起来像这样:
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看起来像这样:
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属性的值)。
任何帮助都将不胜感激!
发布于 2019-02-19 21:58:00
您正在使用相同的状态和相同的功能来控制所有的模态,以打开和关闭模态。
您需要只有一个模式,然后在其中动态呈现消息,或者需要在状态中为每个模式存储一个modalIsOpen变量。
https://stackoverflow.com/questions/54767671
复制相似问题