非自闭 HTML element/React 组件的三元运算符
Ternary Operator for non self-closing HTML element/React component
如何在两个非自闭 React 组件之间选择一个三元运算符?我正在创建启动页面并希望显示背景图片或视频。如果我的 bkgd image & video 组件有自关闭标签会很容易,但是这些组件会包裹页面上的所有内容。
此代码无效,因为 BGVideo 和 ImageContainer 没有结束标记:
const SplashView = ({ videoSrc, imageSrc, overlayColor}) => {
return (
{ videoSrc ? (
<BGVideo src={videoSrc} bgColor={overlayColor}>
) : (
<ImageContainer imgSrc={imageSrc} bgColor={overlayColor}>
)
}
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
{videoSrc ? </BGVideo> : </ImageContainer>}
)
}
我想避免在三元运算符中复制所有子组件:
return (
{ videoSrc ? (
<BGVideo src={videoSrc} bgColor={overlayColor}>
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
</BGVideo>
) : (
<ImageContainer imgSrc={imageSrc} bgColor={overlayColor}>
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
</ImageContainer>
)
}
)
您可以将子组件存储在变量中以避免重复。
const splash = (
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
);
return (
<>
{videoSrc ? (
<BGVideo src={videoSrc} bgColor={overlayColor}>{splash}</BGVideo>
) : (
<ImageContainer imgSrc={imageSrc} bgColor={overlayColor}>{splash}</ImageContainer>
)
</>
);
如何在两个非自闭 React 组件之间选择一个三元运算符?我正在创建启动页面并希望显示背景图片或视频。如果我的 bkgd image & video 组件有自关闭标签会很容易,但是这些组件会包裹页面上的所有内容。
此代码无效,因为 BGVideo 和 ImageContainer 没有结束标记:
const SplashView = ({ videoSrc, imageSrc, overlayColor}) => {
return (
{ videoSrc ? (
<BGVideo src={videoSrc} bgColor={overlayColor}>
) : (
<ImageContainer imgSrc={imageSrc} bgColor={overlayColor}>
)
}
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
{videoSrc ? </BGVideo> : </ImageContainer>}
)
}
我想避免在三元运算符中复制所有子组件:
return (
{ videoSrc ? (
<BGVideo src={videoSrc} bgColor={overlayColor}>
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
</BGVideo>
) : (
<ImageContainer imgSrc={imageSrc} bgColor={overlayColor}>
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
</ImageContainer>
)
}
)
您可以将子组件存储在变量中以避免重复。
const splash = (
<SplashContentContainer>
<Logo />
<Link />
<OtherChildrenComponents />
</SplashContentContainer>
);
return (
<>
{videoSrc ? (
<BGVideo src={videoSrc} bgColor={overlayColor}>{splash}</BGVideo>
) : (
<ImageContainer imgSrc={imageSrc} bgColor={overlayColor}>{splash}</ImageContainer>
)
</>
);