出现错误:
Invalid href passed to next/router: /users//posts, repeated forward slashes (//) or backlashes \ are not valid in the href
我明白为什么会这样
handleClick = () => {
// some code
router.push(`/users/${userId}/posts`)
}
userId
是异步获取的,因此在编译过程中它并不存在,从而导致router.push('/users//posts')
。但是,此代码位于handleClick
中,单击按钮时会触发此代码。
如何解决此问题?
4条答案
按热度按时间xxslljrj1#
问题是我的导航栏的href是
/users/[userId]/posts
,而userId
没有填写nzk0hqpo2#
你不能有
//
在你的链接,调试{userId}
,认为它是未定义的,这就是为什么错误出现。P.S.如果
userId
是异步的,请将if condition
放在router.push
之前8wtpewkr3#
如果
userId
是异步获取的,那么函数和调用该函数的组件是什么样子的?你在
handleClick
函数中有router.push
函数,那么我猜你需要为userId
传递一个参数。函数如下所示:
nnvyjq4y4#
尝试以下代码
您应该删除
/
,因为它介于users
和${userId}
之间。