Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >「React 基础」从创建第一个React组件开始学起

「React 基础」从创建第一个React组件开始学起

作者头像
前端达人
发布于 2019-12-26 06:40:13
发布于 2019-12-26 06:40:13
1.9K00
代码可运行
举报
文章被收录于专栏:前端达人前端达人
运行总次数:0
代码可运行

大家好,在本系列的前三篇文章里,我们一起学习了在 React 中经常会用到的 ES6 新特性,以及 REACT 16+ 版本的一些新特性和团队成员在 Winwow 和 MAC 环境下混合开发时需要注意的一些问题,从本篇文章起,我们将正式开始从最基础的内容开始学习React,今天我们将从创建第一个 React 组件开始学起。

本篇文章主要介绍以下内容:

  • 如何创建我们的第一个 React 组件
  • 如何组织我们的项目文件结构
  • 如何在组件里添加CSS样式

一、如何创建我们的第一个 React 组件

组件是React最基本的内容,通过组件我们可以实现交互和重用,依据组件的创建方式又可以分为三类:class components(类组件)、pure components(纯组件)、pure components(函数组件),接下来,我们来开始动手实践第一个组件吧(这里我们先用类组件的方式进行创建,在后续的文章里将会介绍函数组件)。

1、准备脚手架运行环境

为了方便起见,快速上手 React 项目,我们使用 create-react-app 脚手架创建 React 项目。创建之前,你需要安装 create-react-app 脚手架,安装之前,确保你安装了 Node 运行环境(从 www.nodejs.org 官网下载),支持 Mac, Linux, 和 Windows 系统环境。

在控制台里,我们输入以下命令进行全局安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install -g create-react-app

或者用更简单命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm i -g create-react-app

2、开始动手创建吧!

接下来,我们来按照以下几个步骤来创建我们的第一个 React 项目:

1、在控制台输入以下命令进行项目创建:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create-react-app my-first-react-app

2、将工作台环境切换至当前目录,并运行项目,你需要在控制台输入以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd my-first-react-app
npm start

3、运行完以上的命令后,将会自动调用浏览器窗口,并打开以下网址:

http://localhost:3000

4、接下来,我们在 src 的目录下创建一个 Home.js 的新文件,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React,{Component} from "react";
class  Home extends  Component{
    render() {
        return <h1>I'm Home Component</h1>
    }
}
export  default  Home;

// File: src/Home.js

5、你可能注意到了在代码的最后一行我们使用 export 语法,这句话的意思就是方便我们的组件被其它文件进行模块化调用。这句话除了写在代码的最后,我们还可以在类声前,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React,{Component} from "react";
export  default class  Home extends  Component{
    render() {
        return <h1>I'm Home Component</h1>
    }
}

//File: src/Home.js

小贴士:我个人偏好喜欢将export语句写在文件的末尾,但是有些人喜欢写在类声明前,具体使用哪种写法,取决于个人的喜好。

6、现在我们创建完了第一个组件,我们需要让它在页面中进行呈现。因此,我们需要打开 App.js 文件,通过 import 语法导入 Home 组件,然后将其添加至 return() 里。项目初始化时,你可能会看到如下的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

//File: src/App.js

小贴士:上述代码是通过函数的方式声明组件,接下来的文章里会有介绍,这里就不过多介绍,我们知道是函数组件即可。

7、接下来我们针对上述代码做一些小的改动,我们通过 import 语法将Home 组件文件引入,然后通过 JSX 语法进行添加。这里我们将<p>部分的元素内容进行替换成我们的组件,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from 'react';
import logo from './logo.svg';
import './App.css';

// 这里我们引入了 Home 组件
import Home from "./Home";

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
       {/* 在这里我们添加 Home 组件在页面里进行渲染*/}
        <Home/>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

//File: src/App.js

3、本部分内容小节

到这里我们就完成了第一个类组件的创建,我们这里通过从 react 类库包引入 React、Component 模块,创建了类组件。并通过 import 语法导入了需要此组件的文件,使用 JSX 语法进行添加(其实 React 使用 JSX 来替代常规的 JavaScript,JSX 是一个看起来很像 XML 的 JavaScript 语法扩展)。JSX 语法和 HTML语法类似,你可能注意到了这里我们使用了 className 名称替换了 CSS 的 class 类名(因为 class 是 javascript 的关键词 ES6的类声明部分),如果属性名包含两个单词,建议用驼峰法进行命名(Camel-Case:除第一个单词之外,其它单词首字母大写)。比如 onClick、srcSet、和 tabIndex。如果带有横线的属性,则可以使用原先的命名规则,比如 aria-*、 data-* 等属性(data-something 和 aria-label)。

小贴士:React 组件的名称比如类命名和类文件命名首字母都应该大写,刚开始学习时,你有可能觉得不适应,但这确实是 React 最佳实践推荐的方法。

下图为本小节完成后,项目成功运行后的效果图:

二、如何组织我们的项目文件结构

接下来我们来讨论下如何组织我们React项目的文件结构,在这里我只是给大家提供一个思路方向,具体怎么在此基础上进行优化,还是需要结合自己的项目特点进行优化。

1、首先我们需要通过 create-react-app 创建一个 React 项目(上一小节我们已经完成)。

2、创建完后,项目初始化的结构如下图所示:

3、接下来我们在 src 目录下创建 components目录(src/components) 和 shared目录(src/shared)。

4、然后,我们在 src/components 目录下创建 Home 目录(src/components/Home),并将 Home.js 文件移动至本目录下。

5、App.js 文件移动至 src/components 目录下。

6、App.css、App.test.js 文件也移动至 src/components 目录下。

7、将 logo.svg 文件移动至 src/shared/images 目录下。

8、我们的 index.js 文件位置保持不变 在src/ 目录下。

9、如果你完成了以上步骤的话,你的项目结构如下图所示:

小贴士:如果你创建的组件重用性比较高的话,比如页面的头部和尾部组件,我强烈建议你将共享组件放置在 src/shared/components 目录下。

10、为了保持上小节项目能正常运行,在 App.js 文件中,我们需要修改 logo 和 Home 文件的引用位置,修改部分的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import logo from '../shared/images/logo.svg';
import Home from "./Home/Home";

// File: src/components/App.js

11、接下来,我们需要在 index.js 文件里修正 App 组件文件的位置引用,修改部分代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import App from './components/App';

//File: src/index.js

12、最后验证下项目是否能正常运行,如果按照上述步骤操作后,我们在控制台下运行 npm start 命令来验证项目是否正常运行。

本部分小节

这种项目新结构让我们的项目更具有灵活性和可维护性,当我们项目变得复杂时,这种项目结构就显得尤其重要。

三、如何在组件里添加CSS样式

上两个小节,我们一起完成了如何创建组件和组织项目文件,接下来我们来添加一些CSS内容在文件里。

在 React里,最佳实践就是把CSS文件和组件文件放在同一目录里,不同于我们以前传统的方式,我们将CSS文件放置在一个单独的CSS样式文件夹里。React 项目默认采用 Webpack 模块化打包工具,使用 Webpack 我们可以配置样式的处理方式,关于 Webpack 如何配合 React 项目使用,在后续的文章里会介绍到。

好啦,废话不多说,一起来动手实践吧!

1、创建一个 React 项目或基于上一小节的项目。

2、然后我们为Home组件创建1个新的CSS文件,在同一个 Home 目录下进行创建,让我们稍微修改下 Home 组件并将CSS文件引入,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React,{Component} from "react";
// 在这里引入我们创建的 Home.css 文件
import './Home.css';
export default class  Home extends  Component{
    render() {
        return(
            <div className="Home">
                <h1>Welcome to Codejobs</h1>
                <p>
                    In this recipe you will learn how to add styles to
                    components. If you want to learn more you can visit
                    our Youtube Channel at
                    <a href="https://www.qianduandaren.com">Codejobs</a>.
                </p>
            </div>
        );
    }
}

// File:  src/components/Home/Home.js

3、接下来我们在 Home.css 里添加一些样式,样式就不多解释,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 .Home {
    margin: 0 auto;
    width: 960px;
}

.Home h1 {
    font-size: 32px;
    color: white;
}

.Home p {
    color: white;
    text-align: center;
}

.Home a {
    color: #56D5FA;
    text-decoration: none;
}

.Home a:hover {
    color: #333;
}

/*
File: src/components/Home/Home.css
 */

4、你有可能需要使用内联样式,修改局部的一些样式,你只需要在对应的标签上添加style属性,使用驼峰命名的方式添加CSS属性值,并将其包含在{{ }} 符号里,示意代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React,{Component} from "react";
// 在这里引入我们创建的 Home.css 文件
import './Home.css';
export  default class  Home extends  Component{
    render() {
        return(
            <div className="Home">
                <h1>Welcome to Codejobs</h1>
                <p>
                    In this recipe you will learn how to add styles to
                    components. If you want to learn more you can visit
                    our Youtube Channel at
                    <a href="https://www.qianduandaren.com">前端达人</a>.
                </p>
                <p>
                    <button
                        style={{
                            backgroundColor:'gray',
                            border:'1px solid black'
                        }}
                    >
                    Click me!
                    </button>
                </p>
            </div>
        );
    }
}

// File:  src/components/Home/Home.js

5、除了以上方法,你还可以通过声明样式对象的形式进行样式声明,然后通过内联样式的方式进行引用,请注意样式对象声明的位置,示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React,{Component} from "react";
// 在这里引入我们创建的 Home.css 文件
import './Home.css';
export  default class  Home extends  Component{
    render() {
        const buttonStyle={
            backgroundColor:'gray',
            border:'1px solid black'
        };
        return(
            <div className="Home">
                <h1>Welcome to Codejobs</h1>
                <p>
                    In this recipe you will learn how to add styles to
                    components. If you want to learn more you can visit
                    our Youtube Channel at
                    <a href="https://www.qianduandaren.com">Codejobs</a>.
                </p>
                <p>
                    <button style={buttonStyle}>
                        Click me!
                    </button>
                </p>
            </div>
        );
    }
}

// File:  src/components/Home/Home.js

6、如果按照以上步骤正确操作后,你可以使用 npm start 命令来查看我们的项目,如下图所示:

题外话

你可能对 React 是如何编译的将我的CSS代码引入到我们的项目文件里的好奇,你可以使用谷歌浏览器开发者查看工具进行查看,你将会看到以下内容:

基本上一个CSS文件,分配一个<style>标签区域,我们的React项目对应的有3个CSS文件,就有对应的3个<style>标签区域,这是由于Webpack 默认使用的是style-loader模式。

在使用 create-react-app 创建项目时,我们无法直接修改 Webpack配置,主要是因为项目使用的 react-scripts 程序包进行了集成,除非你手动集成了Webpack配置到你的项目里。

小节

本篇文章的介绍就介绍到这里,感谢你的阅读,本篇文章我们一起学习了如何创建 React 类组件,如何组织我们的项目结构和引入CSS文件,在下一篇文章里,我将介绍如何定义组件的属性(props)和 数据状态(state),敬请期待。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
「React 基础」关于组件属性(props)与状态(state)的入门介绍
大家好,在上一篇文章里,我们一起学习了如何创建第一个 React 组件,我相信通过上一篇文章的学习我们已经基本熟悉了什么是 React 组件,但是还有更多关于组件的内容值得我们去深入学习。本篇文章,我将和大家一起复习下如何使用组件的属性(props)与状态(state)。
前端达人
2019/12/26
1.4K0
「React 基础」关于组件属性(props)与状态(state)的入门介绍
从零开始学习React-目录结构,创建组件页面(二)
1:打开编辑器,导入上一节的创建的项目,开始查看目录结构,manifest.json指定了开始页面index.html,一切的开始都从这里开始。
王小婷
2019/11/05
2.3K0
使用 React 开发单页应用的实践
在阅读这篇文章前,推荐一篇“好”文章:如何提高业务系统的稳定性原创 这篇文章见解独到,深入剖析,为保障业务系统稳固运行提供了极具价值的指导。
用户6935960
2024/11/28
2040
「React 手册 」如何创建函数组件?
大家好,在前面的几篇相关文章里,我们一起学习了如何使用类的方式声明组件,以及如何属性传值和处理本地数据状态,本篇文章我们一起学习如何使用函数的方式进行声明组件。
前端达人
2019/12/30
2.7K0
「React 手册 」如何创建函数组件?
React 学习笔记之创建 React 项目
在 src/index.js 中有如下代码,程序首先导入了 React 和 ReactDom 模块,并导入了一个当前目录下的 App 模块。随后在代码中使用 ReactDOM.render 将 App 模块渲染到了界面上。这个 App 在 React 中称为组件(component)。而这个组件渲染到什么位置则是第二个参数 document.getElementById(‘root’) 决定的,它从 index.html 中获取到了 root 节点,并将 App 插入到 root 节点下。
我与梦想有个约会
2020/01/04
7340
Hello React
  至此,Mac环境下react基于脚手架的开发环境已搭建完成。运行项目( npm start)后,浏览器会自动打开本地页面http://localhost:3000/。如果到此步弹出带有react的Logo的欢迎页面,则表示环境已经成功配置。
流眸
2019/08/09
7800
React 安装
实例中我们引入了三个库: react.development.min.js 、react-dom.development.min.js 和 babel.min.js:
陈不成i
2021/07/29
5710
React 入门手册
React 是目前为止最受欢迎的 JavaScript 框架之一,而且我相信它也是目前最好用的开发工具之一。
用户4456933
2021/07/12
6.5K0
React 入门手册
[译] 在你学习 React 之前必备的 JavaScript 基础
为了不浪费大家的宝贵时间,在开头申明一下,这篇文章针对的阅读对象是:没有写过 React 或者刚刚才接触 React 并且对于 ES6 的语法不太了解的同学,这是一篇基础入门的文章,在一开始我并没有准备翻译一篇这样的基础文章,但是在阅读完全文之后,我想起自己刚开始学习 React 时的迷茫, ES6 有那么多,我需要掌握多少呢?对于一个急于上手 React 写代码的人来说,这篇文章告诉你最基本要掌握的知识,让你快速的写起来。但是后期的提高,仍旧需要去夯实 Javascript 的基础。
coder_koala
2020/03/24
1.7K0
[译] 在你学习 React 之前必备的 JavaScript 基础
使用 React 实现页面过渡动画仅需四个步骤【译】
在本文中,我将向你展示如何使用 ReactTransitionGroup 和 Animated 库中的生命周期方法来实现页面的过渡效果。
疯狂的技术宅
2019/03/28
1.4K0
使用 React 实现页面过渡动画仅需四个步骤【译】
React教程
简介: React 是一个用于构建用户界面的 JAVASCRIPT 库。 React 主要用于构建 UI,很多人认为 React 是 MVC 中的 V(视图)。 React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。 React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。
Baige
2022/03/22
7000
React教程
「React TS3专题」亲自动手创建一个类组件(class component)
上一篇文章,《从创建第一个 React TypeScript3 项目开始》,我们一起学习了如何创建一个React TS3项目。本章节与大家一起聊聊如何使用TS3的方式创建组件。声明React组件的方式共有两种:使用类的方式声明组件(类组件 class component)和使用函数的方式声明组件(函数组件function component)。今天笔者给大家聊聊使用类的方式声明组件。
前端达人
2019/09/05
2.5K0
「React TS3专题」亲自动手创建一个类组件(class component)
React---使用react脚手架搭建项目
  第二步,切换到想创项目的目录,使用命令:create-react-app hello-react
半指温柔乐
2021/04/23
6.2K0
写给前端新人:从 0到1 搭建一个前端项目,都需要做什么?
本案例使用脚手架 create-react-app 初始化了项目。此脚手架有利有弊吧,项目目录结构简洁,不需要太关心 webpack 令人头疼的配置;弊端在于,脚手架确实有些庞大,构建时间在 4mins 左右。各位看官择优选择吧,也可以完全自己搭建一个项目。
zz_jesse
2021/06/01
5.3K0
React-组件-外链样式
然后浏览器当中进行查看,发现 Home 与 About 当中的内容样式都是受到了改变,如果想要在 Home.css 当中更改的样式只是修改 Home.js 组件的内容的话可以在 Home 组件当中的父组件添加一个 id,然后在样式选择器前面添加这个 id 即可如下所示:
杨不易呀
2023/09/30
2080
【React】归纳篇(七)React脚手架 | 写一个表单
React 提供了用于创建react项目的脚手架库:create-react-app,使用这个脚手架开发项目具有“模块化、组件化、工程化”特点。
前端修罗场
2023/10/07
2280
【React】归纳篇(七)React脚手架 | 写一个表单
测开技能--Web开发 React 学习(二)环境搭建
开发环境的搭建,才是学习的第一步,那么我们看看,应该怎么搭建Recat的环境。那么跟着下面的教程,一步步来吧。
雷子
2021/03/15
3130
测开技能--Web开发 React 学习(二)环境搭建
react 学习:React属性 数组遍历、css引入
一:index.js 里直接引入css。 import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; // import Welcome from './Welcome'; import * as serviceWorker from './serviceWorker'; import 'bootstrap/dist/css/bootstrap.
爱明依
2019/04/22
1.1K0
react 学习:React属性 数组遍历、css引入
React: JSX 、虚拟 DOM、组件配置(props、state、PropTypes、createContext、props.children)
learn from 《React全家桶:前端开发与实例详解》 https://zh-hans.reactjs.org/tutorial/tutorial.html https://zh-hans.reactjs.org/docs/create-a-new-react-app.html#create-react-app
Michael阿明
2022/07/28
1.8K0
我的第一个React应用
说起前端框架,我的第一反应就是Angular,Vue和React了,在实习的时候Vue和Angular都使用过,也写过相关的博客,包括自己毕业设计就是Angular来做的,但是毕业之后,在现在家公司就没有机会去使用这些框架(实际上我对于Java更加感兴趣),所以现在对于前端框架的了解可能只是知道一些名词了。这次由于公司产品新的版本用的是React框架,所以有了学React的想法(当然只是想简单的学一些,够用就行了)
每天学Java
2020/06/02
2.1K0
推荐阅读
相关推荐
「React 基础」关于组件属性(props)与状态(state)的入门介绍
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验