想学习 React.js 吗?这是我的免费课程,通过构建一个聊天应用来讲解。

2025-06-10

想学习 React.js 吗?这是我的免费课程,通过构建一个聊天应用来讲解。

点击图片进入课程单击图像即可进入课程。

聊天正在席卷全球,而 React 正在蚕食前端开发。那么,还有什么比通过构建聊天应用来学习 React 更好的呢?在我最新的 Scrimba 课程中,你就能做到这一点。

它包含 17 个互动课程(加上简介和结尾)和 5 个挑战,您必须自己编辑代码。

最棒的是:这一切都在浏览器中完成。您无需编写任何服务器端代码。Chatkit API负责处理后端的繁重工作,这样我们就可以专注于构建聊天客户端。

课程结束后,你将拥有一个专属的个性化聊天应用,它包含多个聊天室、创建新聊天室、自动滚动等功能。此外,借助 CSS 网格和 CSS 变量,它还可以轻松自定义。

我假设你了解 JavaScript,并且之前对 React 有所了解(例如,阅读我这篇五分钟的入门文章,或者浏览一些教程)。除此之外,本课程没有任何先修课程要求。

现在让我们看看它是如何布局的!

第一课:课程介绍

首先,我会简单介绍一下这门课程。我们会讲解你将要学习的内容,我也会做个自我介绍。课程结束后,我还会提前告诉你如何定制你自己的聊天应用。

课程 #2:组件架构

在开始构建 React 应用之前,你应该先了解一下组件架构,并将 UI 拆分成组件。在本讲座中,我将向你展示如何做到这一点。

课程 #3:代码库架构

接下来,我们将看看我们的组件架构是如何转化为代码的。我还将介绍代码库其余部分的设置方法,以免您在开始编码后对代码库中的各种文件感到困惑。

我不会从头开始创建存储库,因为已经有很多教程可以帮助您设置开发环境,而这并不是 Scrimba 平台最适合的。

课程 #4:MessageList 组件

现在我们终于可以开始编写代码了,所以在本课中,我们将在组件中渲染虚拟数据MessageList。本课将向您介绍 JSX,并学习如何使用例如map()数组方法等动态创建元素。

{DUMMY_DATA.map((message, index) => {  
   return (  
     <div key={index} className="message">  
        <div className="message-username">{message.senderId}</div>  
        <div className="message-text">{message.text}</div>  
     </div>  
   )  
})}
Enter fullscreen mode Exit fullscreen mode

在本课中您还将面临您的第一个挑战!

第五课:Chatkit 简介

[!单击图像以获取 Chatkit API。]( https://pusher.com/chatkit?utm_source=scrimba&utm_medium=medium&utm_campaign=announcment-post )
单击图像即可访问 Chatkit API。

现在我们已经能够在页面上渲染数据了,接下来我们将开始集成Chatkit API,它将负责处理应用的后端。在本课中,我将简要介绍一下该 API。

课程#6:连接到Chatkit

接下来只需编写Chatkit集成代码,非常简单:上面的代码就足以让你从聊天室获取消息。你将接触到 React 的componentDidMount()生命周期方法,你需要在这里将组件与第三方 API 连接起来。

课程 #7:状态和属性

在 React 中,我们处理数据的两种方式是 state 和 props,你需要了解两者之间的区别。在本课中,我们需要同时使用这两种类型,因为我们既要将聊天消息存储在App组件的 state 中,也要将它们作为 props 传递给MessageList组件。

constructor() {  
  super()  
  this.state = {  
    messages: []  
  }  
}
Enter fullscreen mode Exit fullscreen mode

第 8 课:消息组件

在本讲座中,我们将构建 Message 组件。它的任务是:渲染从父组件传递过来的用户名和文本。我还将给你一个挑战,将它从基于类的组件转换为函数式组件。

function Message(props) {  
  return (  
    <div className="message">  
      <div className="message-username">{props.username}</div>  
      <div className="message-text">{props.text}</div>  
    </div>  
  )  
}
Enter fullscreen mode Exit fullscreen mode

课程 #9:SendMessageForm 组件

如果没有表单来发送消息,聊天应用就无法运行。所以在本讲座中,我们将创建一个这样的表单。本讲座将讲解受控组件,这是 React 中一个至关重要的概念。这意味着组件本身决定在输入字段中渲染什么,而不是由 DOM 节点本身来保存内部状态。

课程 #10:广播消息

sendMessage(text) {  
  this.currentUser.sendMessage({  
    text,  
    roodId: 9434230  
  })  
}
Enter fullscreen mode Exit fullscreen mode

现在我们已经准备SendMessageForm好了,我们需要将消息发送给 Chatkit,以便它可以广播它们。这将迫使你学习 React 的另一个核心概念:逆数据流。

在 React 中,数据向下流动,从父组件流向子组件。然而,有时我们需要子组件向上访问其父组件并触发其方法,同时传递一些来自子组件自身的数据。

第 11 课:RoomList 组件

由于我们现在已经具备了核心聊天功能(发送和显示消息),现在是时候跳转到RoomList组件了,该组件显示您在 Chatkit 实例上可用的所有房间。

它将向您介绍 Chatkit 中的一些新概念,并巩固您关于如何从父组件向子组件发送数据的知识。我们还将重新讨论 ES6 扩展运算符,它在构建 React.js 应用时非常有用。

第十二课:订阅房间

然后,你需要学习如何订阅特定的房间。我们将为组件中显示的每个房间连接一个事件监听器RoomList。这将触发组件中的一个方法App,该方法会告诉 Chatkit 用户想要订阅该特定房间。

subscribeToRoom(roomId) {  
  this.setState({ messages: [] })  
  this.currentUser.subscribeToRoom({  
    roomId: roomId,  
    hooks: {  
      onNewMessage: message => {  
        this.setState({  
          messages: [...this.state.messages, message]  
        })  
      }  
    }  
  })  
}
Enter fullscreen mode Exit fullscreen mode

第 13 课:房间顺序和突出显示当前房间

本讲座将向您介绍 .sort()JavaScript 中的数组方法,因为我们需要确保我们的房间按正确的顺序排序,无论数据最初来自哪里。

const orderedRooms = [...this.props.rooms].sort((a, b) => a.id - b.id)

我们还将active向当前聊天的房间添加一个类别,以便向用户发出信号。

第 14 课:添加自动滚动

自动滚动功能用于在MessageList组件中自动跳转到最新消息。这是一个巧妙的小技巧,它向您介绍了以下组件生命周期方法:

  • componentWillUpdate()
  • componentDidUpdate()

我们还需要使用该ReactDOM.findDOMNode()方法,因此您也会了解该方法。

第 15 课:NewRoomForm 组件

此组件允许您创建新房间。它将复习第九课中关于受控组件的知识。

至此,我们完成了应用的所有 React 代码。接下来的课程内容,我们将专注于使用 CSS 进行设计。

第 16 课:创建自己的聊天应用

在开始修改应用设计之前,我想先克隆一下我的代码,这样你就能获得自己的代码库副本了。这能为接下来的截屏视频做好准备,之后你可以对应用进行个性化设计。我会指导你完成每个步骤,直到你获得自己的副本和 Chatkit 的免费 API 密钥。

第 17 课:使用 CSS Grid 更改布局

我们使用 CSS Grid 来控制应用程序的布局,这在更改布局时为您提供了极大的灵活性,这要归功于grid-template-areas。我将教您如何仅通过更改几行 CSS 代码即可在页面上移动元素。

第 18 课:使用 CSS 变量更改主题


修改变量之前和之后。
修改变量之前和之后。

由于我们使用 CSS 变量来设置颜色,因此你也可以轻松更改应用的主题。在这里,我将向你提出一个挑战:在网上找到一个好看的调色板,然后将其应用到你的应用中。

如果你把上一课的布局变化和这节课的新调色板结合起来,你就能得到一个完全属于你自己的个性化聊天应用!下面就是我自己做的一个,纯粹为了好玩:

第 19 课:结尾和结束的挑战

如果你能走到这一步:恭喜!你确实为提升技能付出了努力,我百分之百相信你会有所回报。在这个截屏视频中,我会提供一些最后的挑战,如果你真的有勇气的话,可以尝试一下。

在您离开之前,我还想提一下,我们有一个免费的React 入门课程和一个 12 小时以上的React Bootcamp,可以让您从业余爱好者一路成长为专业的 React 开发人员。

感谢阅读!我叫 Per,是Scrimba的联合创始人,我热爱帮助人们学习新技能。如果您想及时收到新文章和资源的通知,请在Twitter上关注我。

祝课程顺利,编码愉快:)

鏂囩珷鏉簮锛�https://dev.to/scrimba/want-to-learn-react-js-here-s-my-free-course-which-teaches-it-by-building-a-chat-app-1i6p
PREV
在 Google、Facebook、Foursquare、Dropbox、Fog Creek 等公司进行面试 1. Google 2. Fog Creek 3. Bloomberg 4. Dropbox 5. Twilio 6. Foursquare 7. Facebook 总结
NEXT
学习如何编写神经网络代码