原创教程之——reactjs 组件入门教程
在学习react之前,希望你有以下准备:
react的安装
ECMAScript 6基础
本文不讲解react的安装步骤,若需了解请移步官方网站(https://reactjs.org/),那里讲解非常清楚,也很简单。
至于ECMAScript 6,大家可以去阮一峰老师的官网(http://www.ruanyifeng.com)学习。
这篇文章主要解决一下几个要点, 这几个要点也可能是大家在学习react时非常迷惑的地方。
要点一:
什么是组件?
要点二:
如何编写组件?
要点三:
组件之间如何组合使用?
在弄清这些要点之前,我们先来看,react安装后的目录是怎样的,应该在哪个目录下进行开发。
看截图:

可以说这个就是react的标准目录结构,打开src目录:
看截图:

这个目录下就是你将要开发组件的地方。
弄清了react的目录结构,我们正式来讲解要点。
什么是组件?
请记住:export关键字导出的就是组件。
这个就是react的核心思想。一个网站的构成可以看成是很多组件的集合。
比如一个网站的首页分为头部,主内容区域,底部。那么这三个大区域就可以当作组件。然后每个区域里的内容块又可以当作组件,以此类推,可以划分成更小的组件。我们可以来看一张图:

说形象点组件就像定义的很多功能函数,通过配置参数,组合调用这些函数,最后就可以实现一个完整的网站。
组件的好处就是能重复使用,既能减少开发量,也能让代码干净整洁,逻辑清晰,方便阅读。
组件如此的美好,那该怎么来编写呢?
第二个问题,如何编写组件。
在编写组件之前,我自己通常把组件分成两种,非UI组件和UI组件。
看例子:
//App.js
import React, { Component } from 'react';
import './App.css';
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<h1 className="App-title">Welcome to React</h1>
</header>
</div>
);
}
}
export default App;
这是一个UI组件。是一个非常简单的组件。即便不了解es6的同学,也能秒懂。
由此,我们可以把UI的组件书写结构标准化,如下:
//MyApp.js
import React, { Component } from 'react';
class MyApp extends Component {
//其它的功能代码
render() {
return (
//UI代码
);
}
}
export default MyApp;
依次类推,我们也可以把非UI的组件书写结构标准化,如下:
//Myfn.js
let Myfn = {
http(params){
//代码
}
showMessage(msg){
//代码
}
...
//其它代码
}
export default Myfn;
对比一下,发现两者有以下不同:
UI组件需要class语句
UI组件需要render函数
反之则不需要。
相同点:
react规定,组件名首字母必须大写。
为了便于代码管理和阅读,最好让组件名和组件内部导出的绑定名字统一。
组件写法我们会了,那如何让组件组合使用呢?
以上面的例子说明,如果我想在MyApp.js里使用Myfn,可以这样使用:
//MyApp.js
import React, { Component } from 'react';
import Myfn from './Myfn'; //注意这句,此处的Myfn.js的扩展名可以省去
class MyApp extends Component {
//其它的功能代码
showMsg(msg){
Myfn.showMessage(msg); //注意这句
}
render() {
//this.showMsg('hello world!')或
//Myfn.showMessage('hello world!')
return (
//UI代码
);
}
}
export default MyApp;
是不是很简单?
记住一句话:非UI组件通常是导入到UI组件里使用的,非UI组件通常为UI组件渲染时提供逻辑处理。
原创教程之——reactjs 组件入门教程的更多相关文章
- Android Navigation 架构组件入门教程
Android Navigation 架构组件入门教程 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:https://www.cnblogs.com/cavalier-/p/1 ...
- highcharts图表组件入门教程:如何监听柱状图柱子点击事件动态更新当前数据点数值和所对应X轴刻度
highcharts图表组件入门教程:如何监听柱状图柱子点击事件动态更新当前数据点数值和所对应X轴刻度 作者:highcharts | 时间:2014-6-11 14:07:05 | [小 大] | ...
- 转:git教程 ~~非常好的入门教程
--------------------------------------- notes: cdmkdir dirnametouchls > filenamelsecho "this ...
- Monster Audio 使用教程(一)入门教程 + 常见问题
Monster Audio支持的操作系统: windows 7 64bit 至 windows 10 64bit 受支持的VST: Vst 64bit.Vst3 64bit 受支持的声卡驱动: ASI ...
- [转][Unreal3教程]引擎使用操作入门教程
前言 如果你想转载这篇文章,请不要把这篇文章的来源去掉:http://blog.sina.com.cn/zjmjeo 一来是对我辛苦写这篇文章肯定,二来我可以有更多机会和你们这些朋友交流 1.打开引擎 ...
- laravel 中CSS 预编译语言 Sass 快速入门教程
CSS 预编译语言概述 CSS 作为一门样式语言,语法简单,易于上手,但是由于不具备常规编程语言提供的变量.函数.继承等机制,因此很容易写出大量没有逻辑.难以复用和扩展的代码,在日常开发使用中,如果没 ...
- WPF入门教程系列二十三——DataGrid示例(三)
DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...
- 转:Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...
- Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...
随机推荐
- NYOJ 1875 畅通工程再续 (无节点间距离求最小生成树)
Description 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题 ...
- mybatis自动映射和手动映射
一对一查询 第一种方法: <!-- 查询所有订单信息 --> <select id="findOrdersList" resultType="cn.it ...
- HDU 4436 str2int
str2int Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on HDU. Original ID: 4 ...
- UVA624 CD,01背包+打印路径,好题!
624 - CD 题意:一段n分钟的路程,磁带里有m首歌,每首歌有一个时间,求最多能听多少分钟的歌,并求出是拿几首歌. 思路:如果是求时常,直接用01背包即可,但设计到打印路径这里就用一个二维数组标记 ...
- NYOJ448寻找最大数,贪心~~
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=92081346718538 ...
- Poj3253:Fence Repair 【贪心 堆】
题目大意:背景大概是个资本家剥削工人剩余价值的故事....有一块木板,要把它切成几个长度,切一次的费用是这整块被切木板的长度,例如将一个长度为21的木板切成2和19两块费用为21,切成两块的长度及顺序 ...
- 【分段哈希】H. Paint the Wall
https://www.bnuoj.com/v3/contest_show.php?cid=9147#problem/H [题意] 在一个长为H,宽为W的白墙上选一个矩形区域涂颜色,后涂的颜色会覆盖先 ...
- hdu 1421经典dp
#include<stdio.h> #include<stdlib.h> #define N 2001 #define inf 0x3fffffff int a[N],dp[N ...
- bzoj 2802 [Poi2012]Warehouse Store STL
[Poi2012]Warehouse Store Time Limit: 10 Sec Memory Limit: 64 MBSec Special JudgeSubmit: 621 Solve ...
- 禁止ScrollView在子控件的布局改变时自动滚动的的方法
重写scrollview中的如下方法,并将其返回值设为0即可. @Override protected int computeScrollDeltaToGetChildRectOnScreen(Re ...