reactjs - 我必须在单击跨度时显示弹出窗口,但元素未出现在 DOM 中
问题描述
我正在尝试在单击跨度时显示一个 div 弹出窗口。即使函数内部的代码正在执行,div 在 DOM 中根本不可见。我不确定我哪里出错了。
<span id="test" onClick={()=>this.bindPopUpData("test")}>
这里我调用函数来绑定弹出窗口。
bindPopUpData=(dimension) =>{
return (
<div id="">
<div className="details_table">
<div className="close_popup">
<span className="icon-Close"></span>
</div>
</div>
</div>
);
}
-- 在这里我试图绑定那个弹出窗口
有人可以告诉我哪里出错了吗?
解决方案
问题是你的事件处理程序只是返回一个值,你没有告诉浏览器把它放在任何地方。
选项 1:使用您的事件处理程序将弹出窗口构建到 DOM 中display:none
并显示/隐藏它。
选项 2:让您的事件处理程序将弹出窗口注入具有document.createElement
和document.appendChild
功能的 DOM。
使用 React,我推荐选项 1,因为您可以将弹出窗口设为组件,并且仅在父组件检测到事件时才呈现它。
class myComponent extends React.Component {
constructor(props) {
super(props)
this.state = {
showpopup: false
}
this.myHandler = this.myHandler.bind(this)
}
myHandler () {
this.setState({showpopup: !showpopup})
}
render () {
return (
<section>
<span onClick={this.myHandler}></span>
{this.state.showpopup ? <Popup /> : ''}
</section>
)}
}
推荐阅读
- node.js - queryTxt ETIMEOUT merncluster-0jdze.mongodb.net
- c++ - 从不属于应用程序的闪存读取
- javascript - 尽管有 if 语句,但代码仍在运行所有循环
- flutter - 颤振:android清单不读取kotlin文件(Application.kt)
- html - 将网格间隙添加到网格的一端
- laravel - 如何将 apiReources 方法与`only`一起使用?
- android - TableRow - 获取列数
- json - 使用 flatpak 发送文件
- javascript - 第二个下拉列表为空
- reactjs - react-recharts LineChart 不呈现