【发布时间】:2018-07-25 10:23:04
【问题描述】:
我不敢相信我不能通过 setState 更新状态。 我想更新 cardModalOpen 状态来关闭 Modal。
我添加了 bind(this) 但它仍然不起作用。
(Modal通过点击卡片组件打开)
但是,我通过closeModal() 函数做了setState({cardModalOpen: false}),但即使在调用渲染方法之后它仍然是正确的。
谁能解释一下我做错了什么。
这是我的代码。
index.js
import React, { Component }from 'react';
import { Button, Card, Image, Header, Modal, Form, Input } from 'semantic-ui-react'
class App extends React.Component {
state = { cardModalOpen:false }
showCardModal() {
this.setState({cardModalOpen:true})
}
closeModal(){
this.setState({cardModalOpen:false})
}
render() {
const messagesDataNew = [];
for (var i = 0; i < 3; i++) {
messagesDataNew.push(
<Card
onClick={() => {
this.showCardModal();
}}
>
<DetailModal
cardModalOpen={this.state.cardModalOpen}
closeModal={this.closeModal}
/>
</Card>
);
}
return <div>{messagesDataNew}</div>;
}
}
DetailModal.js
import React, { Component }from 'react';
import { Button, Card, Image, Header, Modal, Form, Input } from 'semantic-ui-react'
class DetailModal extends Component{
render(){
return(
<Modal open={this.props.cardModalOpen} onClose={()=>{this.props.closeModal()}} >
<Modal.Header>Select a Photo</Modal.Header>
<Modal.Content image>
<Image wrapped size='medium' src='https://react.semantic-ui.com/images/avatar/large/rachel.png' />
<Modal.Description>
<Header>Default Profile Image</Header>
<p>We've found the following gravatar image associated with your e-mail address.</p>
<p>Is it okay to use this photo?</p>
</Modal.Description>
</Modal.Content>
<Button onClick={()=>{this.props.closeModal()}}>Close</Button>
</Modal>
)
}
}
export default DetailModal;
这里是一个代码框,问题转载https://codesandbox.io/s/jjk7nw647y
【问题讨论】:
-
用这个 html 字符 ' 替换 We've单引号
-
@kosukeYoshimura,是否重复回答你的问题
-
@ShubhamKhatri 我遵循了重复的问题答案,但 setState 仍然不起作用
-
请添加更多详细信息或添加有关问题的工作代码和框/repl,这里是类似的代码框,它工作正常codesandbox.io/s/lr3jrp4mmq
-
codesandbox.io/s/jjk7nw647y 这是我的实际代码。你可以检查一下吗? @amankkg
标签: javascript reactjs