⊗jsnxPmLtCMd 37 of 57 menu

Truyền Metadata Động từ Nội dung trong NextJS

Trong bài học trước, chúng ta đã học cách đặt metadata trong nội dung trang web. Phương pháp này tốt, nhưng không phải lúc nào cũng áp dụng được. Vấn đề là metadata của trang có thể thay đổi tùy thuộc vào tham số của route động.

Hãy xem xét một ví dụ. Giả sử chúng ta có một tệp nội dung để hiển thị người dùng dựa trên id của họ. Giả sử trong tệp này có một mảng chứa người dùng:

let users = [ 'user1', 'user2', 'user3', 'user4', 'user5', ];

Hãy hiển thị dữ liệu của người dùng tương ứng với tham số được truyền vào:

export default function User({ params }) { return <> <h1>user {params.id}</h1> <p> name: {users[params.id]} </p> </>; }

Bây giờ hãy chuyển sang vấn đề của chúng ta. Vì chúng ta hiển thị các người dùng khác nhau, nên metadata cho họ cũng phải khác nhau. Chúng ta cần tạo chúng một cách động, tùy thuộc vào giá trị của tham số.

Điều này được thực hiện bằng một hàm đặc biệt là generateMetadata, mà chúng ta phải export từ component của mình:

export const generateMetadata = () => { return { title: '', description: '', }; };

Trong hàm này, chúng ta có thể truy cập các tham số của route:

export const generateMetadata = ({params}) => { console.log(params); };

Hãy trả về metadata phù hợp dựa trên giá trị của tham số:

export const generateMetadata = ({params}) => { return { title: `Page for user {params.id}`, description: `Description for user "{users[params.id]}"`, }; };

Tạo một route xử lý các địa chỉ dạng /post/:id, trong đó thay vì :id có thể là bất kỳ số nào.

Cho mảng sau:

let posts = [ { id: '1', title: 'post 1', desc: 'description for post 1', text: 'text1 text1 text1 text1 text1 text1 text1 text1', }, { id: '2', title: 'post 2', desc: 'description for post 2', text: 'text2 text2 text2 text2 text2 text2 text2 text2', }, { id: '3', title: 'post 3', desc: 'description for post 3', text: 'text3 text3 text3 text3 text3 text3 text3 text3', }, ]; export default function Post() { }

Hãy thực hiện sao cho với id được chỉ định, giao diện của bài viết tương ứng được hiển thị, đồng thời tiêu đề và mô tả meta đúng được đặt.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối