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