如何在无状态下当AskToQualifyForm存在时隐藏CreateBidSection?
解决方案
你之前的写法无效,是因为<AskToQualifyForm />本质是React.createElement返回的对象,在JavaScript布尔判断中,任何非空对象都会被视为true,所以! <AskToQualifyForm />的结果永远是false,导致CreateBidSection永远不会渲染,和你的需求完全相反。
要实现“仅当AskToQualifyForm渲染时,隐藏CreateBidSection”的需求,核心是复用控制AskToQualifyForm是否渲染的条件,而不是直接判断JSX元素本身。具体实现如下:
export default function MyBidPage() { // 定义控制AskToQualifyForm是否渲染的条件 // 替换成你实际的判断逻辑(比如从props获取、静态值等) const shouldShowQualifyForm = true; return ( <div className="children:mb-4"> {/* 根据条件渲染AskToQualifyForm */} {shouldShowQualifyForm && <AskToQualifyForm />} {/* 当AskToQualifyForm渲染时,不显示CreateBidSection */} {!shouldShowQualifyForm && <CreateBidSection />} <DocumentsSection /> <AboutBidderSection /> <ExclusionGroundsSection /> <SelectionCriteriaSection /> </div> ); }
关键说明
- 把控制
AskToQualifyForm显示的条件抽成变量shouldShowQualifyForm,复用这个变量的反向值来控制CreateBidSection的隐藏。 - 这种写法不需要使用组件内部状态,完全基于现有渲染条件实现,符合你的需求。
- 如果
AskToQualifyForm是固定要渲染的,那直接移除CreateBidSection即可,因为此时它永远需要被隐藏。
内容的提问来源于stack exchange,提问作者MiRAY
相关产品推荐
相关产品推荐

