ReactJS 教程

ReactJS 主页 ReactJS 简介 ReactJS 路线图 ReactJS 下载安装和环境配置 ReactJS 功能 ReactJS 优势和缺点 ReactJS 架构 ReactJS 创建 React 应用程序 ReactJS JSX ReactJS 组件 ReactJS 嵌套组件 ReactJS 使用组件 ReactJS 集合组件 ReactJS 样式 ReactJS 属性 (props) ReactJS 使用属性创建组件 ReactJS props 验证 ReactJS 构造函数 ReactJS 组件生命周期 ReactJS 事件管理 ReactJS 创建事件感知组件 ReactJS Expense Manager 事件 ReactJS 状态管理 ReactJS 状态管理 API ReactJS 无状态组件 ReactJS Hooks 进行状态管理 ReactJS Hooks 的组件生命周期 ReactJS 布局组件 ReactJS 分页 ReactJS Material UI ReactJS Http 客户端编程 ReactJS 表单编程 ReactJS 受控组件 ReactJS 非受控组件 ReactJS Formik ReactJS 条件渲染 ReactJS 列表 ReactJS Key 键 ReactJS 路由 ReactJS Redux ReactJS 动画 ReactJS Bootstrap ReactJS Map ReactJS 表格 ReactJS 使用 Flux 管理状态 ReactJS 测试 ReactJS CLI 命令 ReactJS 构建和部署 ReactJS 示例

Hooks

ReactJS Hooks 简介 ReactJS 使用 useState ReactJS 使用 useEffect ReactJS 使用 useContext ReactJS 使用 useRef ReactJS 使用 useReducer ReactJS 使用 useCallback ReactJS 使用 useMemo ReactJS 自定义 Hooks

ReactJS 高级

ReactJS 可访问性 ReactJS 代码拆分 ReactJS 上下文 ReactJS 错误边界 ReactJS 转发 Refs ReactJS 片段 ReactJS 高阶组件 ReactJS 与其他库集成 ReactJS 优化性能 ReactJS Profiler API ReactJS Portals ReactJS 不使用 ES6 ECMAScript ReactJS 不使用 JSX 的 React ReactJS Reconciliation ReactJS Refs 和 DOM ReactJS 渲染道具 ReactJS 静态类型检查 ReactJS 严格模式 ReactJS Web 组件

其他概念

ReactJS 日期选择器 ReactJS Helmet ReactJS 内联样式 ReactJS PropTypes ReactJS BrowserRouter ReactJS DOM ReactJS 轮播 ReactJS 图标 ReactJS 表单组件 ReactJS 参考 API

ReactJS 有用资源

ReactJS 快速指南 ReactJS 备忘录 Axios 备忘录 ReactJS 有用资源 ReactJS 讨论


ReactJS - 使用客户端指令

指令类似于详细说明。在使用 React 服务器组件或创建与其配合使用的内容(例如库)时,它们是必需的。

一种形式的指令称为"使用客户端"。这表示代码的哪些部分在客户端执行,这类似于我们的 Web 浏览器。

另一个选项是"使用服务器"。它定义了可以从在 Web 浏览器中运行的客户端代码调用的服务器端函数。这些指令确保 React 服务器组件中的所有内容顺利运行。

因此,我们将在本教程中讨论"使用客户端"。

什么是使用客户端?

术语"使用客户端"是指在 React 服务器组件中使用或创建与其交互的内容时使用的特定指令。它有助于确定代码的哪些部分在客户端执行,类似于我们的 Web 浏览器。

用法

要使用"use client",只需将其放在文件的开头,在任何其他代码或导入之前。应使用单引号或双引号,但不要使用反引号。

import { useState } from 'react';

何时应使用"use client"?

处理 React 服务器组件时,使用"use client"来区分在服务器上运行的代码和在客户端上运行的代码。

示例

示例 −交互性和状态构建

因此,我们将创建一个包含两个页面的简单导航菜单组件:"主页"和"关于"。

为了确保它在客户端运行,我们将创建一个使用"使用客户端"的 NavigationMenu 组件。该组件将具有两个页面的导航按钮:"主页"和"关于"。它将根据用户的选择显示特定于所选页面的内容。这将是一个简单的导航菜单,允许用户在网站的不同区域之间导航。

"use client";
import React, { useState } from "react";
export default function NavigationMenu() {
   const [currentPage, setCurrentPage] = useState("Home");   
   const navigateToHome = () => setCurrentPage("Home");
   const navigateToAbout = () => setCurrentPage("About");   
   return (
      <div>
         <h1>Navigation Menu</h1>
         <ul>
            <li>
               <button onClick={navigateToHome}>Home</button>
            </li>
            <li>
               <button onClick={navigateToAbout}>About</button>
            </li>
         </ul>
         <div>
            {currentPage === "Home" && <p>Welcome to the Home Page!</p>}
            {currentPage === "About" && (
               <p>Learn more about us on the About Page.</p>
            )}
         </div>
      </div>
   );
}

输出

navigation menu

示例 − 使用客户端 API

这是另一个示例代码,它使用"使用客户端"指令创建一个只能在浏览器中运行的简单功能 −

'use client';

import React, { useRef, useLayoutEffect } from 'react';

export default function VideoPlayer() {
   const videoRef = useRef(null);
   
   useLayoutEffect(() => {
      const video = videoRef.current;
      if (video) {
         // 组件加载时播放视频
         video.play().catch((error) => {
            console.error('Error playing video: ' + error);
         });
      }
   });
   
   return (
      <video ref={videoRef} controls>
         <source src="your-video.mp4" type="video/mp4" />
         The browser does not support the video tag.
      </video>
   );
}

输出

video app

使用第三方库的示例 −

在我们的 React 应用中,我们经常使用其他人提供的预制代码片段(称为第三方库),以帮助完成常见任务或使我们的应用看起来更好并且运行得更好。

有时,这些库会使用 React 的特定部分。如果这样做,它们需要在客户端运行。这对于使用创建上下文、某些 React 函数或需要使用浏览器功能的库来说很重要。

如果库已更新以与 React 服务器组件配合使用,它将已经具有"使用客户端"标记,这意味着可以使用。但是如果它尚未更新,或者我们需要添加自己的特殊设置才能使库正常工作,我们可能需要在库和主代码之间创建一个客户端组件文件,以确保它在 React 服务器组件中正确运行。这样,库就可以使用它所需的所有浏览器功能。

我们将展示如何在 React 项目中使用第三方库,以及如果库尚未针对 React 服务器组件进行更新,为什么我们需要创建客户端组件文件 −

假设我们想将第三方日期选择器库放入我们的 React 应用程序中。由于此库依赖浏览器功能来显示和选择日期,因此它需要在客户端运行。

创建一个名为"DatePickerClient.js"的客户端组件文件并在其中使用"use client"指令。

'use client';

import React, { useState } from "react";
import DatePicker from "react-datepicker";

export default function DatePickerClient () {
   const [startDate, setStartDate] = useState(new Date());
   return (
      <DatePicker selected={startDate} onChange={(date) => setStartDate(date)} />
   );
};

我们将在主要 React 组件 App.js 中导入并使用 DatePickerClient 组件,我们将在其中使用日期选择器。这允许第三方日期选择器库在使用浏览器功能时正常运行。

import DatePickerClient from './DatePickerClient';

export default function App() {
   return (
      <div>
         <h1>Today's Date is</h1>
         <DatePickerClient />
      </div>
   );
}

输出

today date

"DatePickerClient"客户端组件充当第三方日期选择器库和 React 服务器组件环境之间的中介。它确保库可以使用浏览器的日期选择功能。

限制

  • 如果从另一个要在客户端上运行的文件导入标有"使用客户端"的文件,"使用客户端"不会执行任何操作。只有当我们在主文件中使用它时,它才会起作用。

  • 如果组件文件有"使用客户端",那么任何时候我们使用该组件,它都保证是客户端组件。但是,即使没有"使用客户端",组件仍然可以在客户端运行。

  • 某个组件是客户端组件还是服务器组件取决于它的使用位置。如果它在带有"使用客户端"的文件中或在链接到带有"使用客户端"的文件中使用,则它为客户端组件。否则,它为服务器组件。

  • "使用客户端"不仅适用于组件。客户端模块内的任何代码都将被发送到客户端并在客户端运行。它不仅限于组件。

  • 如果用于服务器端的文件从"使用客户端"文件导入某些内容,则它导入的内容必须是 React 组件或可以传递给客户端组件的支持数据。其他任何内容都会导致错误。

摘要

因此,"使用客户端"是管理 React 服务器组件中代码的有用工具。它确保在客户端执行正确的代码,从而提高我们的 Web 应用程序的性能和交互性。只需将其放在文件的开头,我们就可以为我们的 React 应用程序构建高效的客户端代码。

reactjs_reference_api.html