我试图理解Next.js 13服务器组件和客户端组件之间的区别,我有几个问题:
1.如果服务器组件没有访问钩子的能力,那么使用它的好处是什么?用户如何与它交互?(状态、React性)
1.客户端组件和服务器组件都是SEO友好的吗,或者一个比另一个更适合SEO?
1.我们可以像隐藏服务器组件那样隐藏客户端组件的API端点吗?
示例情况:app/abc/page.tsx
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>Click me</button>
</div>
);
}
错误:
"useState" is not allowed in Server Components.ts(71001)
1条答案
按热度按时间yeotifhr1#
1.所有的Next组件都有访问钩子的能力。但是例如useEffect将只在客户端执行。
1.服务器组件更好的搜索引擎优化。因为搜索引擎SSR页面看起来像静态HTML已经在服务器上生成。
1.像SSR一样隐藏-不。因为组件在服务器端渲染,所有渲染所需的方法都在服务器端调用。但是用户请求将在客户端使用SSR和CSR。但是Next提供了一个内置的代理函数
是的,
app
目录存在一些问题。x1c 0d1x这种方法可以让你不用getServerSide props就可以制作SSR组件,但是这是测试版,如果你觉得有问题,不要使用
app
dir,使用getServerSideProps