小编Twi*_*Tea的帖子

动态设置元数据而无需重复请求 - NextJS 13

考虑以下服务器端组件,它是应用程序目录中某个页面 (page.js) 的一部分,代表一个人:

export default async function Person({ params }) {
    const person = await getPerson(params.id);
    
    return (
        <h1> {person.name} </h1>
        <p> {person.bio} </p>
    )
}
Run Code Online (Sandbox Code Playgroud)

显然,这里的目的是动态呈现新页面,其想法是 URL 看起来像/person/{id},其中 ID 是每个人的唯一 ID。

我遇到的问题是我需要为页面设置元数据。例如,我希望标题为person.name,描述为person.description。根据我所读到的内容,在 NextJS 13 中使用 app 目录执行此操作的唯一方法是使用generateMetadata,它看起来像这样:

export async function generateMetadata({ params }) {
    const person = await getPerson(params.id);

    return {
        title: person.name,
        description: person.description
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信您现在可以看到这个问题:我需要getPerson在同一页面中发出完全相同的请求 ( ) 两次。据我所知,没有办法在generateMetadata页面组件之间传递数据。

<Head>组件next/head似乎是理想的解决方案,但它似乎不适用于 NextJS …

node.js reactjs next.js nextjs-dynamic-routing next.js13

15
推荐指数
1
解决办法
3223
查看次数

Java DateTimeFormatter 不适用于模式“ddMyyyy”

考虑以下日期:

String date = "2391995";
String patt = "ddMyyyy";
Run Code Online (Sandbox Code Playgroud)

使用提供的模式,我们可以看到它date代表 1995 年 9 月 23 日。

但考虑一下尝试解析它时会发生什么 - 首先是旧方法,然后是 Java 8+ 方法:

Date dd = new SimpleDateFormat(patt).parse(date);
System.out.println(dd);
        
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(patt);
LocalDate d = LocalDate.parse(date, formatter);
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

输出:

Sat Sep 23 00:00:00 EDT 1995
Exception in thread "main" java.time.format.DateTimeParseException: Text '2391995' could not be parsed at index 7
    ...
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,旧的使用方式可以SimpleDateFormat按预期工作。但是当使用DateTimeFormatterand时LocalDate.parse,就会出现错误。为什么是这样?

java datetime parsing date text-parsing

3
推荐指数
1
解决办法
126
查看次数