使用React-Hooks开发聊天室之2.0版本

使用 React Hooks 开发聊天室 2.0 版本

React Hooks 是 React 16.8 发布的新特性,用于在函数组件中添加状态和其他 React 功能。在这篇文章中,我们将使用 React Hooks 来开发一个简单的聊天室 2.0 版本。

前置知识

在继续之前,你需要熟悉以下技术:

  • React
  • JavaScript ES6
  • WebSocket

如果你不熟悉其中任何一项,请先学习它们再来阅读这篇文章。

技术栈

我们将使用以下技术栈来构建聊天室 2.0 版本:

  • React
  • React Hooks (useState, useEffect)
  • WebSocket

建立基本架构

首先,让我们建立聊天室的基本架构。在你的项目中创建一个名为 ChatRoom.js 的文件,并添加以下代码:

------ ------ - --------- --------- - ---- --------

----- -------- - -- -- -
  ----- ---------- ------------ - -------------
  ----- --------- ----------- - -------------

  ------------ -- -
    -- --------- ---------- ---- ---- ----
  -- ----

  ----- ----------------- - ------- -- -
    -------------------------------
  --

  ----- ------------ - ------- -- -
    -----------------------
    -- ---- ------- -- ------ ----- ---------
    ---------------
  --

  ------ -
    -----
      -------- ---------
      -----
        ----------------------- ------ -- -
          ---- ---------------------------
        ---
      ------
      ----- ------------------------
        ------ ----------- --------------- ---------------------------- --
        ------- ---------------------------
      -------
    ------
  --
--

------ ------- ---------

在这个代码中,我们定义了两个 state 变量 messagesmessage,分别用于存储已接收到的消息和当前正在输入的消息。我们还使用了 useEffect Hook 来建立 WebSocket 连接,并且定义了 handleInputChangehandleSubmit 函数来处理用户的输入。

建立 WebSocket 连接

现在,让我们在 useEffect 中建立 WebSocket 连接。添加以下代码:

------ ------ - --------- --------- - ---- --------

----- -------- - -- -- -
  ----- ---------- ------------ - -------------
  ----- --------- ----------- - -------------

  ------------ -- -
    ----- --------- - --- ---------------------------------

    ------------------- - ------- -- -
      ----- ------- - -----------
      ---------------------- -- ------------- ----------
    --

    ------ -- -- -
      ------------------
    --
  -- ----

  ----- ----------------- - ------- -- -
    -------------------------------
  --

  ----- ------------ - ------- -- -
    -----------------------

    -- --------------- --- --- -------

    ----- --------- - --- ---------------------------------
    ---------------- - -- -- -
      ------------------------
      ------------------
    --

    ---------------
  --

  ------ -
    -----
      -------- ---------
      -----
        ----------------------- ------ -- -
          ---- ---------------------------
        ---
      ------
      ----- ------------------------
        ------ ----------- --------------- ---------------------------- --
        ------- ---------------------------
      -------
    ------
  --
--

------ ------- ---------

在这个代码中,我们使用 new WebSocket() 建立了一个 WebSocket 连接,并在 onmessage 回调函数中处理从服务器接收到的消息。在 handleSubmit 函数中,我们发送用户输入的消息给服务器,并关闭连接。

测试聊天室

现在,让我们测试一下聊天室。在项目中创建一个名为 server.js 的文件,并添加以下代码:

----- --------- - --------------

----- --- - --- ------------------ ----- ---- ---

-

----------------------------------------------------------- ----------
---------------------------------------------------------------------------------------
  

猜你喜欢

  • npm 包 block-comment 使用教程

    简介 block-comment 是一个用于生成块注释的 npm 包,它可以帮助前端开发者更加方便快捷地添加注释内容。本文将介绍如何使用该包以及其详细使用方法。 安装 安装 block-comment...

    6 年前
  • npm 包 is-spdx-license-id 使用教程

    在开发前端项目时,我们通常会使用许多第三方依赖库。为了保证项目的合法性和可靠性,我们需要对这些库所使用的许可证进行审查。is-spdx-license-id 是一款用于检查许可证的 npm 包,本文将...

    6 年前
  • npm 包 tiny-license 使用教程

    在开发前端项目时,使用第三方的库和插件是很常见的事情。但是,在使用他人的代码之前,我们需要了解它对应的许可证信息,以免侵犯版权或产生法律纠纷。而 tiny-license 是一个方便的 npm 包,可...

    6 年前
  • npm 包 tiny-npm-license 使用教程

    在前端开发中,我们经常使用到各种各样的第三方依赖库。对于这些依赖库,我们需要清楚地了解它们的许可证信息,以确保我们的项目符合相应的法律规定。但是,手动查看每个依赖库的许可证信息是一项非常繁琐的任务。

    6 年前
  • npm 包 ga-tracker-snippet 使用教程

    ga-tracker-snippet 是一个能够将 Google Analytics (GA) 跟踪代码嵌入网站的 npm 包。本文将介绍如何使用该包来为您的网站添加 GA 跟踪功能。

    6 年前
  • npm 包 assert-fs-readfile-option 使用教程

    在前端开发中,读取文件是一个常见的操作。Node.js 提供了 fs 模块来进行文件 I/O 操作,但是如果不小心使用错误的参数,可能会导致程序崩溃或者出现安全问题。

    6 年前
  • npm 包 unglobbable 使用教程

    在开发前端项目时,我们通常需要使用许多第三方库和工具。而这些工具的安装则是通过 npm 包管理器进行的。但是,在某些情况下,我们可能只想安装依赖项的特定部分,而非整个包。

    6 年前
  • npm 包 append-type 使用教程

    在前端开发中,我们经常需要对变量的数据类型进行判断和转换。而 npm 上的 append-type 包能够帮助我们完成这些工作。本文将介绍该包的使用方法,并给出一些实用示例。

    6 年前
  • npm 包 indexed-filter 使用教程

    在前端开发中,我们经常需要对数据进行过滤、搜索或排序等操作。而这些操作如果只是使用 JavaScript 原生的语法和方法,可能会十分繁琐和低效。为了解决这些问题,我们可以使用一些封装好的工具库来提高...

    6 年前
  • npm 包 validate-glob-opts 使用教程

    简介 validate-glob-opts 是一个用于验证 glob 模式的参数的 npm 包。它可以帮助前端开发人员更好地使用 glob 模式,并避免一些常见的错误和问题。

    6 年前
  • npm 包 glob-option-error 使用教程

    简介 glob-option-error 是一个用于帮助开发者在使用 glob 匹配文件时检测并报告非法的选项错误的 npm 包。该包可以避免由于选项参数拼写错误或值类型不正确等原因导致的匹配错误。

    6 年前
  • npm 包 assert-valid-glob-opts 使用教程

    在前端开发中,我们经常会用到文件匹配模式(glob patterns)来定位特定的文件路径。而使用 glob 模式时,我们往往需要指定一些参数选项,如忽略某些目录或文件、指定只匹配某一类型的文件等等。

    6 年前
  • npm包lnfs使用教程

    什么是lnfs lnfs是一个基于Node.js的npm包,它提供了一种简单的方法来创建符号链接。符号链接是一种指向另一个文件或目录的特殊类型的文件,可以在不复制实际数据的情况下引用它们。

    6 年前
  • npm 包 glob-observable 使用教程

    前言 在前端开发中,经常需要对文件进行操作。而要对多个文件进行操作时,使用 glob 可以非常方便地匹配到所需的文件路径。但是,当需要对大量文件进行操作时,使用同步版本的 glob 可能会导致阻塞,从...

    6 年前
  • npm 包 read-glob 使用教程

    介绍 read-glob 是一个基于 Node.js 的 NPM 包,它提供了一种简单的方式来读取和处理文件系统中的多个文件。在前端开发中,特别是构建工具(如 webpack、gulp、grunt)等...

    6 年前
  • npm包read-glob-promise使用教程

    引言 如果您是一名前端开发人员,那么您肯定知道npm的重要性。它不仅提供了方便的依赖管理机制,还可以让您在项目中快速安装和使用各种模块。 read-glob-promise是一个有用的npm包,可帮助...

    6 年前
  • npm包line-length使用教程

    介绍 line-length 是一个开源的 npm 包,用来检查文本文件中每行代码的长度是否超过指定字符数。它可以在前端开发、后端开发以及其他各种领域使用。 这个包是如何工作的呢?当我们运行 line...

    6 年前
  • npm 包 max-line-length 使用教程

    在编写前端代码时,我们经常需要关注代码的风格和格式。其中一个重要的方面是代码行的长度,过长的代码行不仅难以阅读,而且可能导致显示问题或其他错误。为了帮助开发者保持适当的代码行长度,npm 上有一个很好...

    6 年前
  • npm 包 stream-counter 使用教程

    什么是 stream-counter? stream-counter 是一个基于 Node.js 的 npm 包,用于对数据流中的字节数、行数和单词数进行计数。它可以在前端或后端使用,适用于任何需要对...

    6 年前
  • npm 包 gulp-size 使用教程

    前端工程化中,打包工具是必不可少的。而gulp是一个非常流行的任务自动化构建工具。其中一个常用的插件就是gulp-size,它可以帮助我们计算文件的大小,并输出到控制台。

    6 年前

相关推荐

    暂无文章