reactjs - React TS - 你可以为 map() 分配默认值吗?
问题描述
我目前有一个通过数据数组映射的组件。我希望能够为某些属性设置默认值。
我当前的Link
组件:
const Link: React.FC<ILink> = ({ icons }) => {
return (
<div>
{icons.map(item => (
<a href={item.href} target={item.target} rel={item.rel}>
{/* Some element */}
</a>
))}
</div>
);
};
通常使用 TypeScript,我会像这样解构道具,然后添加我的默认值:
const Link: React.FC<ILink> = ({
href,
target = "_blank",
rel = "noreferrer noopener"
}) => {}
我怎样才能为我的地图做到这一点?
解决方案
您可以在map
回调中以相同的方式解构和分配默认值:
const Link: React.FC<ILink> = ({ icons }) => {
return (
<div>
{icons.map(({ href, target = "_blank", rel = "noreferrer noopener" }) => (
<a href={href} target={target} rel={rel}>
{/* Some element */}
</a>
))}
</div>
);
};
或者,如果您只希望传递字符串值,则可以简单地使用 or 运算符来定义内联后备:
const Link: React.FC<ILink> = ({ icons }) => {
return (
<div>
{icons.map(item => (
<a href={item.href} target={item.target || "_blank"} rel={item.rel || "noopener noreferrer"}>
{/* Some element */}
</a>
))}
</div>
);
};
推荐阅读
- javascript - 为什么删除文本后无法通过jquery设置输入文本的值?
- android - 当我从片段中按下按钮时如何从 MainActivity 启动媒体播放器
- spring-boot - Spring boot rest api Url 未与 sucees 控制台映射
- c# - 如何使用 C# .net 向 Azure 聊天机器人添加主动学习
- c - C 语言:使用 else-if 语法计算线性系统解时的“Else without a previous if”
- python-3.x - Python3-调用什么变量
- h2o - 我们能看到 DriverlessAI 使用的算法列表吗?
- lua - Lua 匹配一个带前缀的 16 长十六进制
- javascript - 如何仅使用 vue 从外部文件将数据加载到 vue.js
- java - 通过@propertysource注解和使用PropertySourcesHolderConfigure bean在spring中加载属性文件有什么区别