【发布时间】:2021-10-29 21:56:20
【问题描述】:
情况有点复杂:
-
在一个名为“LeftSectionHeader”的组件中,我有一个 div,单击它时必须呈现一个组件;
-
要渲染的组件称为“ProfileMenu”,基本上是一个div,必须在“LeftSectionHeader”本身和另一个div之上渲染;
-
所有这些组件都在另一个名为“Main”的组件中呈现。
问题是如果我在“LeftSectionHeader”里面定义函数,“ProfileMenu”会在里面渲染,而我需要它不仅要渲染到外面,还要覆盖它;这就是为什么你会在“Main”中看到一些布尔变量,因为这是我渲染它的唯一方法,但它仍然没有覆盖其他 div。我将附上每个组件的代码以及最终结果应如下所示。
LeftSctionHeader:
function LeftSectionHeader(){
return(
<div class="left-section-header">
<div class="crop" ><img src="./images/profiles/anonimous.png" /></div>
</div>
);
}
属于“crop”类的div是必须点击才能呈现“ProfileMenu”的div
个人资料菜单:
function ProfileMenu(){
return(
<div class="profile-side-menu">
//A lot of boring stuff
</div>
);
}
有一些与这个组件相关的功能,但并不重要,所以我没有放,直接忽略吧
主要:
var p=true;
var m=true;
function Main(){
return(
<div class="main">
<Header />
<div class="left-section">
{m ? <div><LeftSectionHeader /><LangMenu /></div> : <ProfileMenu />}
</div>
{p ? <PostPage /> : <NoPostsMessage />} //Ignore this line
</div>
);
}
【问题讨论】:
-
使用
useState钩子来存储点击的状态。在div点击时,只需将状态更改为 false。
标签: javascript reactjs render