场景, 封装组件的时候, 想通过外部传进去一个路由地址, 再用<Link to={}>跳转, 显示这个,
有四种方法解决
第一种 合并运算符 ??
??
是 空值合并运算符 (Nullish Coalescing Operator),它是 JavaScript 和 TypeScript 中的一种逻辑运算符,通常用于处理 null
或 undefined
的情况。
javascript
a ?? b
解释:
- 如果
a
不是null
或undefined
,那么a ?? b
会返回a
的值。 - 如果
a
是null
或undefined
,那么a ?? b
会返回b
的值。
javascript
<div className="right">
{/* 第一种 */}
<Link to={props.moreTextHref ?? ''}>{props.moreText}</Link>
</div>
第二种
使用条件渲染
javascript
{
props.moreTextHref && (
<Link to={props.moreTextHref}>{props.moreText}</Link>
)}
第三种
类型断言来明确告诉 TypeScript props.moreTextHref
不会是 undefined
。
javascript
<Link to={props.moreTextHref as string}>{props.moreText}</Link>
第四种
强制传递的就是字符串
javascript
interface IProps {
children?: ReactNode;
title?: string;
keywords?: string[];
moreText?: string;
// 把问号去掉
moreTextHref: string;
}