reactjs - 基于 cms 在 React/Typescript 应用程序中添加某个字段值时的条件样式
问题描述
在我的 React/Typescript 组件中,每当CMS 添加<Link />
值 (data.link?.text
和) 时,我都会渲染一个组件。data?.link?.url
{data.link?.text && data?.link?.url && (
<Link to={data?.link?.url}>
)}
我使用 Typescript Optional Chaining有条件地渲染Link
或不渲染。因此,如果链接字段的text
andurl
被填充,它会呈现<Link />
组件。
链接类型:
export type Link = {
link: {
url: string;
text: string;
};
}
如果Link
页面上不存在组件/未呈现组件,我想为组件添加一些样式 ( margin-bottom
) List
。
组件的结构如下所示:
<List>
<div css={styles.list}>
// Mapped list items here
</div>
</List>
{data.link?.text && data?.link?.url && (
<Link css={styles.link} to={data?.link?.url}>
{data.link.text}
</Link>
)}
因此,我必须以某种方式创建一个布尔值并基于该布尔值,在我的中MyComponent.styles.ts
我可以执行以下操作:
margin-bottom: ${haslink ? `0` : `35px`};
解决方案
我认为您可以创建一个带有额外边距底部的 div,您可以根据链接 url 有条件地呈现它。
<List>
<div css={styles.list}>
// Mapped list items here
</div>
</List>
{data.link?.text && data?.link?.url ? (
<Link css={styles.link} to={data.link.url}>
{data.link.text}
</Link>
) : (
<div style={{ marginBottom: '35px' }} /> // <-- adjust how you style this element as needed
)}
推荐阅读
- r - 从 gfortran 调用 Lapack DLL
- maven - 在 Anypoint 平台 (CloudHub) 中使用 Jenkins 部署时出现错误 409 冲突
- sql-server - 如何通过 SQL Server 插入的索引有效地替换长字符串?
- javascript - 如何使用 javascript 或 jquery post 方法从循环中发送变量并使用 php 接收
- r - 如何在 gitbook 风格的 bookdown 中使用 gitbook 插件
- macos - macOS Catalina 内核调试
- matlab - 行向量的连续数字之和并将它们存储在该位置
- python - 为什么当我设置 while var != 0 时循环不会在 0 计数处中断
- reactjs - 承诺链接不返回预期结果
- haskell - 用于 Haskell Stack 项目的 gitlab-CI:如何缓存构建的库?