「React」RSC 服务端组件

前言

RSC(React Server Components)是React框架的一个新特性,它允许开发者编写只在服务器端渲染的组件。与传统的服务器端渲染(SSR)不同,RSC的目标是提升性能和用户体验,同时减少客户端加载的JavaScript代码的体积。
在这里插入图片描述

使用示例

如何在一个项目中使用React Server Components和客户端组件协同工作:

服务端组件示例 (UserList.server.js)

这个服务端组件负责从服务器获取用户列表,并将其渲染成无状态的HTML。

// UserList.server.js
import React from 'react';
import { fetchUserList } from './api';

function UserList() {
  const users = fetchUserList(); // 假设这是服务器端的数据获取函数
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

export default UserList;

客户端组件示例 (UserPage.client.js)

客户端组件包含状态和交互逻辑。例如,在此例中,组件响应用户的点击事件。

// UserPage.client.js
import React, { useState } from 'react';
import UserDetails from './UserDetails.client';
import UserList from './UserList.server';

function UserPage() {
  const [selectedUserId, setSelectedUserId] = useState(null);

  const handleUserClick = (userId) => {
    setSelectedUserId(userId);
  };

  return (
    <div>
      <UserList onUserClick={handleUserClick} />
      {selectedUserId && <UserDetails userId={selectedUserId} />}
    </div>
  );
}

export default UserPage;

在这个简单的场景中,UserPage.client.js 能够导入并且利用UserList.server.js,即使UserList是在服务器上渲染的。UserPage还管理着用户的选择状态,并根据该状态显示UserDetails组件。

好处

  • 数据获取快,可以直接在Node端读取数据,塞给组件
  • 更安全,比如密钥等等不方便暴露给客户端
  • 服务器组件生成结果可缓存
  • 减少JS bundle包大小,服务器组件在客户端无需打包进JS
  • 更快的FCP
  • Streaming优化,html页面实际上是可以分为多个chunk输出给用户的

相关推荐

  1. 关于Nuxt.js 服务组件的使用

    2024-06-12 11:52:04       33 阅读
  2. Web服务由哪些设备组成

    2024-06-12 11:52:04       35 阅读
  3. ReactReact表单组件

    2024-06-12 11:52:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 11:52:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 11:52:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 11:52:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 11:52:04       20 阅读

热门阅读

  1. 图论第9天

    2024-06-12 11:52:04       7 阅读
  2. 多进程并发服务器

    2024-06-12 11:52:04       8 阅读
  3. 2024年全国高考作文题目汇总

    2024-06-12 11:52:04       8 阅读
  4. 求最值(C++)

    2024-06-12 11:52:04       7 阅读
  5. 【京存】无惧卡顿

    2024-06-12 11:52:04       5 阅读
  6. 6.11啊啊啊啊啊啊啊

    2024-06-12 11:52:04       6 阅读
  7. NX二次开发消息打印,可用于调试

    2024-06-12 11:52:04       6 阅读
  8. tensorflow安装

    2024-06-12 11:52:04       5 阅读
  9. Web前端图片并排显示的艺术与技巧

    2024-06-12 11:52:04       7 阅读
  10. ubuntu安装deb解决依赖关系错误问题

    2024-06-12 11:52:04       8 阅读
  11. Webapp前端框架模板:探索、实践与创新

    2024-06-12 11:52:04       8 阅读