Next.js 15(2024年10月发布)和React 19(2024年12月稳定版)代表了近年来React生态系统最重大的变化。这些变化影响了你对渲染、数据获取和表单处理的思考方式——不仅仅是API。以下是重要内容及其原因。
React 19核心变化
React Actions:最重要的新原语。”action”是一个异步函数,可以传递给表单的`action`属性或从事件处理程序中调用。当你正确使用它们时,React会自动处理加载状态、错误处理和乐观更新。React 19之前的表单处理:每个表单都需要手动状态管理(字段的`useState`、加载的`useState`、错误的`useState`、副作用的`useEffect`)。React 19:`
`——React自动跟踪待处理状态,成功后表单重置。`useActionState`钩子:`const [state, dispatch, isPending] = useActionState(action, initialState)`——同时管理服务器action状态、待处理状态和错误状态。`useOptimistic`钩子:在服务器确认之前立即更新UI,然后与服务器响应协调。对于即时反馈重要的评论/点赞/关注互动最有用的钩子。服务器组件:现在稳定(在Next.js 13/14中作为实验性存在)。服务器组件完全在服务器上渲染——它可以直接访问数据库、文件系统和密钥而不将其暴露给客户端。没有`useState`、没有`useEffect`、完全没有客户端JavaScript。基本思维模式转变:在旧的React中,一切默认是客户端组件,你选择进入服务器渲染(SSR)。在新的React/Next.js模型中,组件默认是服务器组件,你通过在文件顶部添加`’use client’`来选择客户端行为。`use`钩子:`const data = use(promise)`——在客户端和服务器组件中都有效,用于展开promise和React Context。特别适用于在服务器组件中读取上下文。
Next.js 15变化
异步请求API:`cookies()`、`headers()`、`params`和`searchParams`现在都是异步的——你必须`await`它们。这是Next.js 14的破坏性变更。codemod处理大多数情况:`npx @next/codemod@latest next-async-request-api .`。原因:移至异步使这些API可以与React的Suspense模型组合。Turbopack用于开发(稳定):Next.js 15将Turbopack作为默认开发打包器(你仍然可以使用Webpack,但默认现在是Turbopack)。声称:初始编译快76.7%,HMR(热模块替换)快96.3%。实际上:显著更快的冷启动和更快的页面刷新。需要React 19:Next.js 15需要React 19。这意味着新的钩子和服务器操作可用,但也意味着React 19中的破坏性变化适用。`Form`组件:Next.js 15附带了一个`




