我试图弄清楚如何定义一个主页链接,如果有一个经过身份验证的用户,则呈现一个页面,如果没有,则呈现另一个页面。
Me是我的函数,检查是否有经过身份验证的用户。到目前为止,它在我的应用程序中工作。
当我尝试:
<HomeLink
href={!me? "/" | "/dash"}
>
<Logo />
</HomeLink>
我收到一个错误消息:
类型'boolean'无法指派给类型'string'。ts(2322)Nav.tsx(147,3):预期的型别来自属性'href',而该属性是在型别'IntrinsicAttributes & HomeLinkProps'上于此处宣告的
我的HomeLinkProps定义为:
interface HomeLinkProps extends LinkProps {
href: string
}
function HomeLink({ href, ...props }: HomeLinkProps) {
const { asPath } = useRouter()
const isActive = asPath === href
return (
<NextLink passHref href={href}>
<Link
px={4}
py={2}
textDecor="none !important"
{...props}
>
{props.children}
</Link>
</NextLink>
我认为它被正确地定义为字符串-href条件中的两个替代项都是字符串-但我不知道如何在Logo字段中表达它。
如何在使主页链接指向一个页面或另一个页面之前添加条件以检查是否有经过身份验证的用户?
1条答案
按热度按时间khbbv19g1#
请参阅Conditional (ternary) operator。
在条件为真时应执行的表达式后面应该有一个冒号(
:
)。(不是|
)href={!me ? "/" : "/dash"}
或href={me ? "/dash" : "/"}