这是组件:
'use client';
export default async function Wallet({params}) {
console.log("params", params);
//const time = { datetime: new Date().getTime() };
const time = { datetime: "Foo!" };
console.log(">>>", time);
return (
<div>
Wallet!
Time <pre>{time.datetime}</pre>
<br />
</div>
)
}
它位于动态路由/w/:id下,如下所示:
当我在浏览器上使用next dev
时,控制台日志语句根据Chrome控制台运行两次:
现在,我知道reactStrictMode的行为,我在next.config.js中选择退出,如下所示:
const nextConfig = {
experimental: {
appDir: true,
},
reactStrictMode: false
}
module.exports = nextConfig
如果我删除它,组件渲染3次!
由于我是React/Next的新手,我很确定我正在做一些使应用程序不稳定的事情,但我不知道是什么。事实上,如果我注解将时间设置为常量对象{ datetime: foo }
的行,并替换为像{ datetime: new Date().getTime() }
这样的动态对象,应用程序开始抛出错误,但只有当我手动刷新它时:
作为一个额外的问题,为什么我在我的服务器终端上看到控制台输出,“使用客户端”不是应该告诉Next组件只应该在浏览器中呈现吗?顺便说一下,在服务器上,控制台日志只打印一次。
1条答案
按热度按时间pgvzfuti1#
你的实现有很多问题,比如: