前言

React,Facebook开发的前端框架。当时Facebook对市面上的前端框架都不满意,于是自己捣鼓出了React,使用后觉得特别好用,于是就在2013年开源了。

我也用React开发了一个简单的博客:

Dvorak Chen的博客

在原生的HTML中,是不存在组件化的,为了开发便利,人们使用各种方法来模拟组件。如将HTML封装在一段JS代码中,通过调用这段JS代码来操作界面。无奈碍于前端三大件:HTML、JS、CSS的限制,无法真的做到专注于组件。

React框架就很好地解决了这个问题。

前置知识

这是个适用于没有React基础的人群的React教程

你需要熟悉HTML、JS、CSS的相关知识,懂得如何安装node、npm

如果你会typescript,那就更好了。

在这个教程中,我们将着重介绍需要用的知识,遵循发现问题-思考问题-解决问题的思路来学习React的用法。对于一些我们用到的,但是在当前不那么重要的东西,我会一笔带过。

环境搭建

在开发React之前,我们需要能够开发React的环境,为此需要安装node,和npm。node是用于运行JS代码的环境,npm是用于管理JS项目的包管理器。

在这里我们使用 vs code 编辑器来编写代码。

安装node

前往nodejs官网下载并安装,在本文中使用的是16.15.0 LTS版本

安装好后,在终端中输入node -v查看是否安装成功,如果有显示出node的版本号,就是成功了。

在这个教程中,确保你的node版本大于12.0.0

安装 npm

在你安装好了nodejs后,你就可以使用npm,同样,在终端中输入npm -v查看版本号,如果有输出版本号,就是安装成功了。

如果需要更新到最新的npm,只需要在终端中输入:npm install -g npm然后等待即可。

创建react项目

在终端中输入以下命令来创建一个React项目:

npm create vite@latest my-react-app -- --template react

这个命令将使用npm,来调用vite包,来为我们创建一个项目,vite后面的后缀@latest表示使用你vite的最新版本,my-react-app是我们要创建的项目名,可以替换为你喜欢的名字,后面跟着的 -- --template react表示创建的项目所适用的模板是react。

vite是一个前端构建工具,在这里我们使用了vite这个包来创建项目。在很多教程中使用的不是vite,而是 npx create-react-app@latest my-app的命令来创建项目,这种方式使用的构建工具默认是webpack;我推荐使用上面的vite方式,它的构建工具使用的是vite。如果你不懂什么是构建工具,那么在现在也不需要去了解

创建完成后,你会在当前目录下看到名为my-react-app的文件夹,。

打开该文件夹,你应该看到的是以下的文件结构:

先不管这一堆文件和文件夹是干什么的,我们在终端里输入 npm i 安装所有依赖的包,这可能需要一些时间。安装好了后,项目根目录下会多了一个名为node_modules的文件夹,这个文件夹里就是项目依赖的包。安装了依赖的包后,我们的项目就能运行起来了。在终端里输入npm run dev,这个命令将启用开发用的服务器,有什么用?就是说你可以一边修改代码,一边查看最新的页面效果了。

在输入输入 npm run dev 后,终端里会应该会有如下的提示:

vite v2.9.9 dev server running at:

> Local: http://localhost:3000/
> Network: use `--host` to expose

我们可以在浏览器中打开上面显示的本地地址:http://localhost:3000/来查看效果,页面效果如下图:

这个页面的代码,是写在什么呢?

我们打开./src/App.jsx

这个文件,我们将看有一个方法:function App(),这个方法返回了一段HTML代码!等等,为什么JS代码里能够返回HTML代码?

function App() {
// ...
return (
<div className="App">
{/* ... */}
</div>
);
}

这种JS和HTML混合的写法是React的重要语法,叫做jsx,如果你是用typescript的话那就是tsx。

叫什么不重要,重要的是理解它代表了什么。这种写法,可以在JS代码的函数里返回一段HTML代码,同时可以附加上一些用于控制这些HTML的逻辑。而这个函数,我们就叫做React的组件

组件

/**
* 在React里,你经常会看到如下的方法
* 这是一个组件
*/
function ComponentFunction() {
// 逻辑
return (
<div>
返回的HTML代码
</div>
);
}

那么,这个组件,我们要怎么使用,让它显示到页面上呢?

使用组件

这个组件看起来像一个方法,但是我们却不是要用调用方法的方式去使用。现在,请记住在App.jsx中的App组件。我们现在再回头看看目录,目录下有一个main.jsx,在这个文件中,我们能看到以下代码:

ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<App />
</React.StrictMode>
)

注意中间的<App />写法,我们的App组件,就是以这种HTML的写法来调用。

好了,现在这个main.jsx文件我们不要动他,忘了它吧。回到我们的App.jsx里,我们把这个组件里的内容全部删掉,改成如下的代码:

function App() {
return (
<div>
Hello React!
</div>
);
} export default App

保存后刷新页面,你就会看到页面发生了变化,左上角出现了Hello React!字样。我们的HTML代码,都可以写在组件的返回值里,当我们调用组件,就会使用返回值里的HTML代码,替换到你使用这个组件的地方。

子组件

现在,我们已经简单认识了组件,我们可以仿照着,自己新建一个组件了。

其实就是写一个方法,该方法返回HTML。我们要将一个组件单独放在一个文件里,这是一个好习惯。在src下新建一个文件my-sub-component.jsx,在里面写上我们的新组件:

//  记得 export 导出,不然别的地方用不了
export function MySubComponent() {
return <div>这是一个新组件,也是一个子组件</div>;
}

一个组件,是不是子组件,只是相对于其他组件而言的。如果A组件中内嵌了了B组件,那么B组件就是A组件的子组件

回到我们的App.jsx,要使用别的组件,首先要引用它,引用my-sub-component.jsx并在App组件中使用HTML的写法来使用组件:

import { MySubComponent } from './my-sub-component'

function App() {
return (
<div>
Hello React!
<MySubComponent />
</div>
);
} export default App

如同使用<App />一样使用<MySubComponent />,保存后刷新,我们能够在页面上看到我们的子组件!

如果你的子组件和上面一样显示了出来,太棒了!It's work!

你学会了React最重要的两个东西之一:组件,React所有的界面显示,都是靠一个一个的组件组合起来而成,返回值的HTML写法上和原生HTML的写法有一点区别,我们将在下一章介绍。


告辞!

React简单教程-1-组件的更多相关文章

  1. React简单教程-2-ts和组件参数

    前言 在上一章:React 简单教程-1-组件 我们知道了 React 的组件是什么,长什么样,用 js 和 HTML 小小体验了一下组件.在这一章,我们将使用 typescript(简称 ts) 来 ...

  2. React简单教程-6-单元测试

    前言 我想大部分人的前端测试,都是运行项目,直接在浏览器上操作,看看功能正不正常.虽然明明有测试库可以使用,但是因为"要快"的原因,让好好做测试变成了一件影响效率的事. 因为这种无 ...

  3. React简单教程-4-事件和hook

    前言 在上一章 React 简单教程-3-样式 中我们建立了一个子组件,并稍微美化了一下.在另一篇文章 React 简单教程-3.1-样式之使用 tailwindcss 章我们使用了 tailwind ...

  4. React简单教程-3-样式

    前言 在上一章 React 简单教程-2-ts 和组件参数 中我们新建的子组件 Displayer 没有样式,显得平平无奇,这一篇我们将给他美化一下. CSS 文件 一般的做法,是在你的组件级目录下新 ...

  5. React简单教程-4.1-hook

    前言 虽然我们简单感受了一下 useState 的用法,但我想你还是对 React 里的 hook 迷迷糊糊的.本文我们将明确下 React 的概念. HOOK 前生今世 在我示例中,写的 React ...

  6. React简单教程-3.1-样式之使用 tailwindcss

    前言 本文是作为一个额外内容,主要介绍 tailwindcss 的用法 tailwindcss 是一个功能类优先的 CSS 框架,我在以前的文章里有描述为什么使用功能类优先:为什么我在 css 里使用 ...

  7. React简单教程-5-使用mock

    前言 一个前后端分离的项目,前端人员需要对接后端的接口.如果在后端的接口没有开发好,或者没有测试版可以对接的情况下,前端人员也不能坐等后端接口写好后再开始开发. 一个项目的,理想情况下接口的规范应该是 ...

  8. react开发教程(三)组件的构建

    什么是组件 组件化就好像我们的电脑装机一样,一个电脑由显示器.主板.内存.显卡.硬盘,键盘,鼠标.... 组件化开发有如下的好处:降低整个系统的耦合度,在保持接口不变的情况下,我们可以替换不同的组件快 ...

  9. FusionCharts简单教程(八)-----使用网格组件

            有时候我们会觉得使用图像不够直接,对于数据的显示没有表格那样直接明了.所以这里就介绍如何使用网格组件.将网格与图像结合起来.网格组件能够将FusionCharts中的单序列数据以列表的 ...

随机推荐

  1. Centos6.9 安装zabbix3.4 过程

    Centos6.9 安装zabbix3.4 过程 1.安装apache httpd 一开始忘记截图(略...) # yun install httpd 完成后,启动httpd服务 # service ...

  2. TINY语言采用递归下降分析法编写语法分析程序

    目录 自顶向下分析方法 TINY文法 消左提左.构造first follow 基本思想 python构造源码 运行结果 参考来源:聊聊编译原理(二) - 语法分析 自顶向下分析方法 自顶向下分析方法: ...

  3. spring-Bean依赖注入-》普通数据类型

    1.创建UserDao接口以及UserDaoImpl实现类(接口代码省略) public class UserDaoImpl implements UserDao { private String u ...

  4. 我们可以定向调度某个pod在某个node上进行创建

    集群环境:1.k8s用的是二进制方式安装 2.操作系统是linux (centos)3.操作系统版本为 7.2/7.4/7.94.k8s的应用管理.node管理.pod管理等用rancher.k8s令 ...

  5. Markdown练习

    这是一级标题 这是二级标题 这是三级标题 这是无序列表1 这是无序列表2 有序1 有序2 重点 计网 1. 第一章 第一部分 1.概念.组成.功能和分类 1. 概念 计算机网络是互连的.自治的计算机的 ...

  6. 【面试普通人VS高手系列】lock和synchronized区别

    今天来分享一道阿里一面的面试题,"lock和synchronized的区别". 对于这个问题,看看普通人和高手的回答! 普通人: 嗯,lock是J.U.C包里面提供的锁,synch ...

  7. 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了

    本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...

  8. 2021.11.03 P6175 无向图的最小环问题

    2021.11.03 P6175 无向图的最小环问题 P6175 无向图的最小环问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 给定一张无向图,求图中一个至少包含 33 ...

  9. Go汇编语法和MatrixOne使用介绍

    目录 MatrixOne数据库是什么? Go汇编介绍 为什么使用Go汇编? 为什么不用CGO? Go汇编语法特点 操作数顺序 寄存器宽度标识 函数调用约定 对写Go汇编代码有帮助的工具 avo tex ...

  10. 封装axios在项目中使用

    import store from '@/store/index' import { Loading,Message,MessageBox } from 'element-ui' import rou ...