javascript - 在 Next.js 页面中检索子域
问题描述
我有一个pages/index.tsx
Next.js 页面,其代码如下所示:
import { ApolloProvider } from "@apollo/react-hooks"
import Client from "../db"
import Header from "../components/Header"
export default function Index() {
return <ApolloProvider client={Client}>
<Header langKey={langKey} />
</ApolloProvider>
}
问题是,langKey
应该是访问页面的子域(例如,en.localhost:3000
或fr.localhost:3000
;langKey
将是en
或fr
)。如何从 Next.js 上下文中检索此信息?我尝试了 Router 对象,但它看起来不像在第一个/
.
解决方案
在getInitialProps
生命周期方法(doc's here)上,您可以访问服务器端的请求对象并解析主机标头。
Index.getInitialProps = async ({ req }) => {
const subdomain = req.headers.host.split('.')[0];
return { langkey: subdomain };
};
如果仅在客户端需要此信息,您可以使用以下方法轻松解析window.location
生命周期方法中的某个位置:window.location.host.split('.')[0]
.
希望有帮助!
推荐阅读
- go - 为什么要报告这种数据竞赛?
- c - 以 int 数组的形式访问和读取 char 数组
- asp.net-mvc - 在 Blazor 的 ValidationMessage 中显示 html 或多行消息?
- swift - 如何制作可重置的 RxSwift 计时器?
- api - 是否可以创建具有多个组的播放会话?
- node.js - NPM 如何处理与子/传递依赖的冲突
- postgresql - Docker Spring Boot Postgres 检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接
- python - 如何使用 Python 将文件插入/上传到 Google Drive API v3 中的特定文件夹
- javascript - 使用空终止迭代javascript map.values() 迭代器是个坏主意吗?
- scala - 在 Akka Sharding 上启动时初始化实体