reactjs - React/NextJS 路由道具到孙子的 Link 组件不起作用
问题描述
我有点卡住了......并且无法弄清楚这是否是 NextJS 的问题。
我有三个组件:
- CardsList(列出所有卡片 - 有多个
<Card>
孩子) - 卡(卡的表示 - 有一个
<Button>
孩子) - 按钮(在卡片中显示一个按钮 - 使用
<Link>
组件)
按钮组件包含一个 nextjs/link 组件。
我需要通过 Card 将文章的链接从 CardsList 传递到 Button(并在此处传递到我<Link>
的 href 中)...
如果我将链接(例如 /mytest)直接从 Card 传递到 Button,这将非常有效......当我从 CardsList 路由它时,它还会显示字符串,通过 Card 到按钮只是为了在屏幕上打印它 - 是的,我可以看到它的价值......但是当我这样做时它不起作用:
export default function Button({ text, link }) {
return (
<Link href={link} passHref>
<button className="bg-transparent hover:bg-primary text-link font-semibold hover:text-white py-1 px-3 border border-link hover:border-transparent rounded self-center" >
{text}
</button>
</Link>
);
}
是的,{text}
有效 - 也从祖父组件 (CardsList) 传递。但是如果不是直接从其直接父组件发送的,则 Link 组件不接受传递的 prop!(是的,它有效,如果我只传递一个级别的字符串 - 但如果它是从 CardsList 传递的(并且刚刚通过),它将不会被接受!)
未处理的运行时错误错误:失败的道具类型:道具
href
需要 astring
或object
in<Link>
,但得到了undefined
。
是的,我知道,我可以使用状态管理,但我不想为此设置整个状态管理 - 因为它在其他任何地方都不需要它。
非常感谢你们,伙计们!
萨沙
解决方案
我已经通过在将道具传递给链接组件之前创建另一个字符串来“修复它”(并不自豪!)。
export default function Button({ text, link }) {
return (
<Link href={`${link}`} passHref>
<button className="bg-transparent hover:bg-primary text-link font-semibold hover:text-white py-1 px-3 border border-link hover:border-transparent rounded self-center" >
{text}
</button>
</Link>
);
}
这很奇怪......也许我会在未来找到原因。
问候,
萨沙
推荐阅读
- javascript - 在 javascript 中使用哈希表搜索对象值
- java - SpringBoot @Scheduled 每两次执行之间的随机延迟
- node.js - 在 dialogflow webhook 中设置了响应,但它返回未设置响应
- reactjs - react-bootstrap-typeahead labelKey 打字稿
- javascript - 不同句子的随机组合
- python - 计算抵押贷款 - python 3.8.3
- c# - 如何在 C# 中使用 Imap 过滤来自特定发件人的电子邮件?
- javascript - 如何使用 setInterval 或 setTimeout 在 nodeJS/Javascript 中创建证书监视器/监视器
- typescript - 包含 TypeScript 中两个树状对象的公共属性的 Express 接口
- python - Matplotlib 显示 x 轴标签不完整;如何防止重叠?