我让这个例子尽可能简单,如果需要更多的信息来解决,我可以包括更多的代码
我在nextJS中使用动态路由。我的应用程序使用twitter-v2
包,根据API输入到动态路由中的关键字从twitter中提取结果
我尝试使用router.pathname
来创建页面上的一些属性,但它使用的是文件名而不是URL中的单词。
NextJS版本:Next 9.5.3
转译页面路径:/pages/[keywords].jsx
示例URL:
http://localhost:3000/kpop-heroes
示例寻呼功能:
import Router from 'next/router'
export default function Keywords() {
const router = useRouter();
const KEYWORDS = router.pathname
.slice(1)
.split('-')
.join(' ');
return (
<div>Twitter reactions to <code>{KEYWORDS}</code></div>
)
};
渲染:
我是不是误解了这个功能?有没有可能检索网址中的单词而不是文件名?
注意:我一直在使用window.location.href
作为解决方法,但我的理解是访问window对象不是最佳的
5条答案
按热度按时间oymdgrw71#
使用
asPath
属性。该属性返回浏览器中显示的路径(包括查询)。https://nextjs.org/docs/api-reference/next/router#router-object
xoefb8l82#
要获取两种情况下的正确URL,例如动态(
[slug]
)和固定路径:6fe3ivhb3#
我只是使用了错误的方法-正确的方法是
router.query
。请考虑以下URL:
记录由方法产生的对象:
输出:
我一定是忽略了,文件上写得很清楚:https://nextjs.org/docs/routing/dynamic-routes
我想我还是把这个留着吧,免得别人也搞不清楚
hrysbysz4#
我认为正确的方法是在特定的
path
(例如/twitter)下定义dynamic-routes。转译页面路径:
示例URL:
在url的第一级定义动态路由是不合理的。
beq87vna5#
这对我很有效
...
...