React 服务器功能基础知识
- 服务器组件(React Server Component,RSC):运行在服务器上并像SSR一样渲染到客户端的组件。
- 服务器功能(又名服务器操作):仅在服务器上运行并将信息发送到客户端的功能。
指令
- 'use client':如果您使用的是启用“服务器组件”的环境,则应在文件顶部标记 use client 以将其标记为客户端组件。
- ‘use server’:如果你考虑改变服务器上的信息,你应该在服务器组件或文件的函数体顶部标记 use server 指令,以仅在服务器上操作。
服务器组件
- RSC 没有状态,也没有生命周期。您不能在服务器组件上使用任何钩子函数(useState、useEffect 等)。
- RSC 可以有异步函数。
- RSC可以具有服务器功能。但您必须在函数体顶部标记“使用服务器”。
- RSC 可以在服务器组件和客户端组件中拥有子组件。
- RSC 无法运行任何浏览器 API。
- 您的 RSC 可以将任何类型的 props 传递给 RSC。还可以将 props 类型传递给客户端组件。检查下面的指令类型表。
import marked from 'marked'; // Not included in bundle import sanitizeHtml from 'sanitize-html'; // Not included in bundle async function Page({page}) { // NOTE: loads *during* render, when the app is built. const content = await file.readFile(`${page}.md`); return <div>{sanitizeHtml(marked(content))}</div>; }
服务器功能
- 定义时,函数体或文件中必须有“use server”指令。
- 您可以在函数体上运行任何服务器功能。
- 您无法在函数体上运行浏览器API。
- 您可以在服务器和客户端上调用服务器函数。
- 您可以返回有限制的值。检查下面的指令类型表。
在服务器组件中声明服务器函数
import Button from './Button'; function EmptyNote () { async function createNoteAction() { // Server Function 'use server'; await db.notes.create(); } return <button onclick="{createNoteAction}/">; } </button>
在单独的文件中声明服务器功能
"use server"; export async function updateName(name) { if (!name) { return {error: 'Name is required'}; } await db.users.updateName(name); }
在客户端组件中使用服务器功能
import marked from 'marked'; // Not included in bundle import sanitizeHtml from 'sanitize-html'; // Not included in bundle async function Page({page}) { // NOTE: loads *during* render, when the app is built. const content = await file.readFile(`${page}.md`); return <div>{sanitizeHtml(marked(content))}</div>; }
指令中句柄值类型的比较
- 使用客户端:将 prop 类型从服务器组件传递到客户端组件。
- use server: Server函数的返回类型
Type | use client | use server | Notes |
---|---|---|---|
string | ✅ | ✅ | both string value and iterables are supported. |
number | ✅ | ✅ | |
bigint | ✅ | ✅ | |
boolean | ✅ | ✅ | |
undefined | ✅ | ✅ | |
null | ✅ | ✅ | |
Array | ✅ | ✅ | Only available in the item of serializable list. |
Map | ✅ | ✅ | Only available in the item of serializable list. |
Set | ✅ | ✅ | Only available in the item of serializable list. |
TypedArray | ✅ | ✅ | |
ArrayBuffer | ✅ | ✅ | |
Date | ✅ | ✅ | |
object | ✅ | ✅ | Support only plain object(object initializers or JSON), null prototype not supported. |
Promises | ✅ | ✅ | Only available in the serializable list. |
ReactNode | ✅ | ❌ | Only Server Component can send it to Client Component via props. |
FormData | ❌ | ✅ | Only server functions can return FormData instance. |
symbol | ⚠️ | ⚠️ | Only symbols registered in the global Symbol registry via Symbol.for |
function | ⚠️ | ⚠️ | Only server functions allowed. |
class | ❌ | ❌ | Any instance objects are not serializable. |
- 其他类型和实例不可用。
快乐反应!
以上是React 服务器功能备忘单的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript核心数据类型在浏览器和Node.js中一致,但处理方式和额外类型有所不同。1)全局对象在浏览器中为window,在Node.js中为global。2)Node.js独有Buffer对象,用于处理二进制数据。3)性能和时间处理在两者间也有差异,需根据环境调整代码。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用