javascript - 如何解决隐藏和显示错误在反应
问题描述
我正在做一个项目,我想使用事件处理程序<div>
在另一个<div>
元素下方显示隐藏,但是当我单击用于显示 div 的图标时,整个页面变为空白
这是我想要的图像:
这就是我所得到的 ,我试图通过互联网检查一些我可以获得解决方案的地方。好吧,我发现了与我所做的类似的事情,但错误仍然发生在我身上。
class PostItTeaser extends Component {
state = {
postIt: false,
moreIt: false,
}
togglePostIt = e => {
e ? e.preventDefault() : null
this.setState({ postIt: !this.state.postIt })
}
_toggle = e => {
e ? e.preventDefault() : null
this.setState({
moreIt: !this.state.moreIt,
})
}
Child = () => <div className="modal">Hello, World!</div>
render() {
let { postIt } = this.state
let { moreIt } = this.state
let {
type,
group,
disabled,
session: { id, username },
} = this.props
return (
<div>
<div
className="post_it inst"
style={{ marginBottom: type == 'group' && 10 }}
>
<img src={`/users/${id}/avatar.jpg`} alt="Your avatar" />
<div className="post_teaser">
<span
className="p_whats_new"
onClick={disabled ? null : this.togglePostIt}
>
What's new with you, @{username}? #cool
</span>
<span className="m_m_exp" data-tip="More" onClick={this._toggle}>
<MaterialIcon icon="expand_more" />
</span>
</div>
</div>
{moreIt && <Child />}
{postIt && (
<PostIt back={this.togglePostIt} type={type} group={group} />
)}
</div>
)
}
}
解决方案
通过浏览代码,我相信您需要绑定范围,因为您正在调用的函数正在使用this.setState
,它需要this
是反应组件,而不是您正在收听的事件:
onClick={this._toggle.bind(this)}
您还可以在构造函数中绑定函数范围。或者,一种内存性能较差且丑陋的方式:
onClick={() => { this._toggle(); } }
推荐阅读
- html - , 与 box-layout 不一致
- python - 更改python请求的IP
- java - 在 Android 4 上突然错过了很多课程
- mysql - MySQL 错误代码:在 UPDATE 期间出现 1175,其中包括从 IN 语句中选择的行 KEY
- html - 制作一个模糊其背景的 div
- javascript - 当用户输入某个值时,如何标记复选框已选中?
- amazon-web-services - 弹性搜索 v5 模板到 v6
- c# - AWS Lambda 访问本地资源或存储 C#
- vue.js - nuxt js 商店在新鲜时丢失 id
- php - 如何使用 php ajax 和 jquery 从数据库中检索数据并在文本框中显示?