我正在嘗試使用動態路由,這樣 URI 在 NextJS 13 專案中具有 blogs/id/
,其中 id 部分應該是動態的,但它似乎不起作用。似乎總是顯示部落格對應的頁面。
我在這個專案中使用了Next 13 中的實驗應用程式目錄,並且我有一個路由blogs
,我透過建立layout.jsx
和 來設置它
。 src/app/blogs/
目錄中的>page.jsx
我注意到src/app/blogs/[id]/page.jsx
中的控制台日誌語句顯示在伺服器端控制台中。即終端機(不是瀏覽器控制台)。但是,return語句中對應的JSX並沒有渲染。相反,與 blogs
對應的 JSX 正在被渲染。
src/app/blogs/layout.jsx
import PageTitle from '../components/Title/page-title'; import BlogPage from './page.jsx'; export default function BlogLayout() { const blogTitle = "My Blog" return ( <> <PageTitle title={blogTitle} /> <BlogPage /> </> ) }
src/app/blogs/page.jsx
function BlogPage() { return ( <> <p className="blog-text--paragraph prose text-gray-600">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur quaerat a possimus, qui expedita iure, ipsum asperiores aliquid eveniet libero vel architecto! Assumenda incidunt dolore molestiae? </p> </> ); } export default BlogPage;
src/app/blogs/[id]/layout.jsx
import PageTitle from '../../components/Title/page-title'; import BlogPageMain from '../[id]/page'; export default function DynamicBlogLayout() { const blogTitle = "BlogPageMain Blog" return ( <> <PageTitle title={blogTitle} /> <BlogPageMain /> </> ) }
src/app/blogs/[id]/page.jsx
export default function BlogPageMain({ params, searchParams }) { console.log("The current ID is:"); console.log(params.id); return <div>ID: {params.id}</div> }
- 下一個 v13.3.0
- Tailwindcss v3.3.1
- 節點 v18.15.0
# - 紗線 v1.22.19
- Ubuntu 22(Linux)
部落格/二的截圖供參考
# 前端截圖供參考
我已經閱讀了官方文件幾次,但我無法理解這裡出了什麼問題以及為什麼它無法正確渲染。非常感謝任何幫助。
嘿,我在這裡看到的問題是不是 動態路由,而是layout.jsx。
您應該渲染子級,而不是手動渲染頁面。
#src/app/blogs/layout.jsx
src/app/blogs/[id]/layout.jsx
更多資訊
供參考