吐槽一个 nextjs 中并不存在的槽点

62 天前
epiloguess  epiloguess

很多人讨论 nextjs 不支持在 server component 中使用 hooks 感到不解/不满。

其实我对这种观点本身也挺不解的,毕竟 server component 只是在服务端渲染 react 组件(这一点 vite 也能做到),如果它要支持 hooks 了,我反倒觉得匪夷所思了。

2064 次点击
所在节点   前端开发  前端开发
8 条回复
wisetc
wisetc
62 天前
組件生命週期原因,以及狀態變化過程,在 node 中渲染沒有意義,缺失了在瀏覽器中的交互過程,而只得到一個可以在瀏覽器中得到的結果
Frankcox
Frankcox
62 天前
我现在是正在学 Next.js ,请教一下,async/await is not yet supported in Client Components, only Server Components. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server. Error Component Stack 。 客户端组件是不应该使用 async await 的,那是应该把 async 获取数据的部分和组件页面内容分开两个文件处理吗?
9ki
9ki
62 天前
要怪就怪 useEffect 的设计,心智负担重不提,还只能在里面获取数据,要知道 Nextjs 开发者首先是 React 开发者。

还有一方面,Hooks 的一大优点就是可以共享逻辑,但是用 getStaticProps/getServerSideProps 完全丧失了这部分优势。
epiloguess
epiloguess
62 天前
@Frankcox 这取决于 1.组件渲染发生的位置,你希望发送给用户一个渲染好的结果(注重渲染速度),还是发送一个 rsc 让浏览器自己渲染(注重交互),2.数据请求发生的位置,一般来说服务器相比用户,更靠近数据库,但是你 await 的这个请求,不一定是你的 api ,它可能是个第三方的,有次数限制的。
Frankcox
Frankcox
62 天前
@epiloguess 谢谢,我目前的场景是 React 调用第三方 api ,拿到数据后自己处理渲染。
Plumbiu
Plumbiu
62 天前
可能他们用惯了 vue ,vue 响应式确实可以脱离浏览器环境,然后理所应当的觉得 nextjs 的 rsc 也可以用 hooks ,但凡稍微了解一下 react 的设计理念啥的(虽然我觉得好不到哪里去),hooks 运行在服务端一点都不合理,这点直觉都没有吗....
MagicalCarl
MagicalCarl
62 天前
没有感到不解/不满,让我不满的是所有组件默认是 server component
karott7
karott7
62 天前
我觉得不是 server component 或者 hooks 的问题,只能说做全栈或者 ssr 就是有心智负担,因为服务端和客户端的运行时和组件运行逻辑终究是不同的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1099364

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX