javascript - NextJS'te Özel Doküman kullanırken URL parametreleri nasıl alınır
NextJS kullanarak SSR sayfaları üretiyorum ve bu sayfalar dil özelidir. Metnin dilini belirtmek için lang özelliğini ayarlamak istiyorum.
Şu ana kadar sahip olduğum:
import Document, { Html, Head, Main, NextScript } from "next/document"
import Router from "next/router"
class MyDocument extends Document {
render() {
const { lanaguage } = Router.router.query
return (
<Html lang={language}>
<Head />
<body className="antialiased text-white text-base font-sans">
<Main />
<NextScript />
</body>
</Html>
)
}
}
export default MyDocument
Ancak, bir Özel Doküman (_document.js) kullanırken Router.router her zaman null olur. Özel bir Doküman kullanırken URL parametrelerini/sorgusunu almak için başka bir yol var mı?
Cevap #1
Bunu kullanarak çözebildim:
import Document, { Html, Head, Main, NextScript } from "next/document"
class MyDocument extends Document {
render() {
const { lanaguage } = this.props.__NEXT_DATA__.query
return (
<Html lang={lanaguage}>
<Head />
<body className="antialiased text-white text-base font-sans">
<Main />
<NextScript />
</body>
</Html>
)
}
}
export default MyDocument
this.props.__NEXT_DATA__ kullanmanın kötü bir uygulama olup olmadığından emin değilim. Ancak, ihtiyacım olan bilgiye sahip.
Cevap #2
Next.js v10'dan itibaren, yerleşik i18n yönlendirmesini kullanıyorsanız, Next belgeyi otomatik olarak lang özniteliğine ayarlayacaktır.
Belgelerden:
Next.js, kullanıcının hangi dili ziyaret ettiğini bildiğinden,
<html>etiketine otomatik olaraklangözniteliğini ekleyecektir.Next.js bir sayfanın varyantlarını bilmez, bu yüzden
next/headkullanarakhreflangmeta etiketlerini eklemek size kalmıştır.hreflanghakkında daha fazla bilgiyi Google Web Yöneticisi belgelerinde öğrenebilirsiniz.
