作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Next.js 中收到此错误:
Error: The provided 'href' (/subject/[subject]) value is missing query values (subject) to be interpolated properly. Read more: https://err.sh/vercel/next.js/href-interpolation-failed`.
/subject/[subject].tsx
.现在在我的导航中,我有:
<Link href={'/subject/${subject}'} passHref><a>{subject}</a></Link>
当我使用不同的路径访问页面时它工作正常,但是当我按下页面上的按钮时,它会引发错误,我想这是因为组件重新呈现。如果您转到错误页面,它会显示:
Note: this error will only show when the next/link component is clicked not when only rendered.
我试图寻找解决方案,并尝试这样做:
<Link href={{pathname: '/subject/[subject]', query: {subject: subject}}}></Link>
但没有任何改变。我阅读了文档,似乎
as
prop 只是一个不再使用的可选装饰器,所以我看不出它对我有什么帮助。
最佳答案
尝试将用户重定向到语言环境时遇到了同样的问题。我在 useEffect
中做到了.经过调查,我发现在第一次渲染时 router.query
为空,因此缺少必填字段 id
.我使用 router.isReady
修复它
export const useUserLanguageRoute = () => {
const router = useRouter()
useEffect(() => {
const {
locales = [],
locale,
asPath,
defaultLocale,
pathname,
query,
isReady // here it is
} = router
const browserLanguage = window.navigator.language.slice(0, 2)
const shouldChangeLocale =
isReady && // and here I use it
locale !== browserLanguage
&& locale === defaultLocale
&& locales.includes(browserLanguage)
if (shouldChangeLocale) {
router.push(
{
pathname,
query,
},
asPath,
{ locale: browserLanguage }
)
}
}, [router])
}
关于javascript - 链接组件插值错误 nextjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65469874/
我是一名优秀的程序员,十分优秀!