reactjs - Next.js 将附加数据传递给动态路由
问题描述
我想在我的路由 URL 中使用电影标题(例如电影/fletch),但后续getServerSideProps
请求需要 episode_id。
如何将film.episode_id 和film.title 都传递给films/[id]/index.js?
Movies.js
<Link
href={{
pathname: `/films/[id]`,
query: {
id: film.episode_id
},
}}
as={`/films/${encodeURIComponent(film.title)}`} >
<a>{film.title}</a>
</Link>
films/[id]/index.js
import {useRouter} from 'next/router'
const movie = () => {
const router = useRouter();
console.log(router);
const { id } = router.query
return (
<div>Movie page for <strong>{id}</strong></div>
)
}
解决方案
您可以使用context.query
来获取链接的查询参数。
// films/[id]/index.js
import PropTypes from 'prop-types'
const Movie = ({ query }) => {
return (
<div>Movie page for <strong>{query.id}</strong></div>
)
}
Movie.propTypes = {
query: PropTypes.shape({
id: PropTypes.string,
})
}
export async function getServerSideProps(context) {
return {
props: { query: context.query }
}
}
export default Movie
推荐阅读
- scala - 从 lambda 函数缩放 elastick beastalk
- python - 如何使用用户输入保存函数的输出
- java - BrowserUP 代理服务器不收集所有页面
- datatables - 在 DataTables 中居中 PDF 按钮
- vb.net - 如何从 Windows 窗体返回值以发挥作用?
- javascript - 通过 Konva.js 和 Gifler 加载时如何修复 gif 动画的故障?
- javascript - 鼠标移动时的空闲事件 - 如何创建循环?
- apache-spark - 有没有办法使用 Snowflake 及其 Spark 连接器获取查询的行数?
- html - 我有一个带有 HTML 文档的 clob。如何用文本替换其中的所有脚本?
- html - 如何在不改变页面高度的情况下移动元素?