1.react的基础知识
React 的基础之:JSX 语法
react 使用 JSX 语法,js 代码中可以写 HTML 代码。
let myTitle = <h1>Hello, World!</h1>;
JSX 语法解释:
(1) JSX 语法的最外层,只能有一个节点:
//错误
let myTitle = <p>Hello</p><p>World</p>
(2) JSX 语法中可以插入 JavaScript 代码,使用大括号。
let myTitle = <p>{'Hello' + 'World'}</p>
Babel 转码器
js 引擎(包括浏览器和 Node)都不认识 JSX,需要首先使用 Babel 转码,然后才能够运行。
<script src="react.js"></script>
<script src="react-dom.js"></script>
<script src="babel.min.js"></script>
<script type="text/babel">
// ** 这里添写代码! **
</script>
React 需要加载两个库:React 和 React-DOM,前者是 React 的核心库,后者是 React 的 DOM 适配库。
Babel 用来在浏览器转换JSX语法,如果服务器已经转好了,浏览器就不需要加载这个库。
React基础之React组件
React 允许用户定义自己的组件,插入网页。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>菜鸟教程 React 实例</title>
<script src="https://cdn.bootcss.com/react/15.4.2/react.js"></script>
<script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script>
<script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script>
</head>
<body>
<div id="example"></div>
<script type="text/babel">
class MyComponent extends React.Component {
render() {
return <h1>Hello world</h1>;
}
}; ReactDOM.render(
<MyComponent/>,
document.getElementById('example')
);
</script>
</body>
</html>
结果:

React组件的语法解释
- class MyComponent extends React.Component 是 ES 6语法,表示自定义一个 MyComponent 类,该类继承了积累 React.Component 的所有属性和方法。
- React 规定,自定义组件的开头字母必须大写,比如 MyComponent 不能写为 myComponent,以便于与内置的原生类相区分。
- 每个组件都必须有 render 方法,定义输出的样式。
- <MyComponent/> 表示生产一个组件类的实例,每一个实例一定要有闭合标签,写成 <MyComponent></MyComponent> 也可以。
组件的参数
组件可以从外部传入参数,内部使用this.props获取参数。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React 实例</title>
<script src="https://cdn.bootcss.com/react/15.4.2/react.js"></script>
<script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script>
<script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script>
</head>
<body>
<div id="example"></div>
<script type="text/babel">
class MyComponent extends React.Component {
render() {
return <h1 style={{color: this.props.color}}>
{this.props.name}
</h1>;
}
}; ReactDOM.render(
<MyComponent name='Hello world' color='red' />,
document.getElementById('example')
);
</script>
</body>
</html>
结果:

语法解释
- 组件内部通过this.props对象获取参数。
组件的状态
组件往往会有内部状态,使用this.state表示
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React 实例</title>
<script src="https://cdn.bootcss.com/react/15.4.2/react.js"></script>
<script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script>
<script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script>
</head>
<body>
<div id="example"></div>
<script type="text/babel">
class MyComponent extends React.Component {
constructor(... args) {
super(...args);
this.state = {
test: 'Hello State',
isClicked: false
};
} handleClick() {
let isClicked = !this.state.isClicked;
this.setState({
isClicked : isClicked,
text: isClicked ? 'Hello State' : Date();
});
} render() {
return <h1 onClick={this.handleClick.bind(this)}>
clikc to : {this.state.text}
</h1>
} }; ReactDOM.render(
<MyComponent/>,
document.getElementById('example')
);
</script>
</body>
</html>
语法解释
class MyTitle extends React.Component {
constructor(...args) {
super(...args);
this.state = {
name: '访问者'
}
}
}
constructor是组件的构造函数,会在创建实例时自动调用。...args表示组件参数,super(...args)是ES6规定的手法。this.state对象用来存放内部状态,这里是定义初始状态。
<div>
<input type="text" onChanges={this.handleChange.bind(this)}>
<p>你好,{this.state.name}</p>
</div>
this.state.name表示读取this.state的name属性。每当输入框有变动的时候,就会自动调用onChange指定的监听函数,这里是this.handleChange, .bind(this)表示该方法内部的this,绑定当前组件。
handleChange(e) {
let name = e.target.value;
this.setState({
name: name
});
}
this.setState方法用来重置this.state,每次调用这个方法,就会引发组件的重新渲染。
组件的生命周期
React为组件的不同生命周期,提供了近十个钩子方法。
钩子方法:是对于抽象方法或者接口的一个空实现。
现实中的一应用,想要实现某个接口中的一个方法(该接口中有多个方法),先用一个抽象类实现这个接口,然后用abstract修饰想要实现的方法,然后其他方法都使用空实现,然后子类继承抽象类即可。这里的空实现方法就是钩子方法。
- componentWillMount():组件加载前调用。
- componentDidMount():组件加载后调用。
- componentWillUpdate():组件更新前调用。
- componentDidUpadte():组件更新后调用。
- componentWillUnmont():组件卸载后调用。
- componentWillReceiveProps():组件接受新参数时调用。
1.react的基础知识的更多相关文章
- React入门---基础知识-大纲-1
-----------------在慕课网学习react入门笔记-------------- ---------博主边学边记录,手把手进行学习及记录---------- --------------- ...
- React JS 基础知识17条
1. 基础实例 <!DOCTYPE html> <html> <head> <script src="../build/react.js" ...
- React.js基础知识
一. react.js的基本使用方法 (1)快速使用,hello world <div id="app"></div> <script src=&qu ...
- react 的基础知识
react 是目前最流行的框架: 其中是采用 mvvm 的思想,让我们把所有的只关注视图层和逻辑层, 从而可以更好的书写代码: 在 react 中我们的 html 结构也是通过 js 来实现的,而且在 ...
- React的入门知识与概念【1】
回顾在以往的项目开发中,从最初的使用的原生html+js+css+jquery开发,到后来随着项目功能的增加,也渐渐学习了Vue.js框架的开发,以及Vue.js的全家桶Axios,Vue-route ...
- React Native 入门基础知识总结
中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...
- React:快速上手(1)——基础知识
React:快速上手(1)——基础知识 React(有时叫React.js或ReactJS)是一个为数据提供渲染为HTML视图的开源JavaScript库,用于构建用户界面. JSX.元素及渲染 1. ...
- 【温故知新】—— React/Redux/React-router4基础知识&独立团Demo
前言:React专注View层,一切皆组件:全部使用ES6语法,最新版本为React16. Redux是专注于状态管理的库,和react解耦:单一状态,单向数据流.[独立团github地址] 一.Re ...
- 学习React之前你需要知道的的JavaScript基础知识
在我的研讨会期间,更多的材料是关于JavaScript而不是React.其中大部分归结为JavaScript ES6以及功能和语法,但也包括三元运算符,语言中的简写版本,此对象,JavaScript内 ...
随机推荐
- EG:nginx反向代理两台web服务器,实现负载均衡 所有的web服务共享一台nfs的存储
step1: 三台web服务器环境配置:iptables -F; setenforce 0 关闭防火墙:关闭setlinux step2:三台web服务器 装软件 step3: 主机修改配置文件:vi ...
- CSS3 3D发光切换按钮
在线演示 本地下载
- Linux下的文件查找命令——find
Linux下几个常见的文件查找命令: which 查看可执行文件的位置 whereis 寻找特定文件,查看文件的位置 locate 配合数据库查看文件位置 find ...
- 前段时间说了AssetBundle打包,先设置AssetLabels,再执行打包,但是这样有个弊端就是所有设置了AssetLabels的资源都会打包,这次说说不设置AssetLabels,该如何打包AssetBundle
BuildPipeline.BuildAssetBundles() 这个函数,有多个重载,一个不用AssetBundleBuild数组,一个需要,如果设置了AssetLabels,那么这时候是不需要的 ...
- INSPIRED启示录 读书笔记 - 第10章 管理上司
十条经验 1.为项目波动做好准备:用项目波动代指让你心烦意乱的各种返工.计划变更.不要企图消灭项目波动,但是可以尽量降低其负面影响.方法是提高警惕,记录工作进度,掌握项目波动的规律,寻找对策.制订项目 ...
- QT 使用QPainter 绘制图形 和 世界变换 world transform
1. 绘制椭圆 饼状型 贝塞尔曲线 绘制图像重写方法 void paintEvent(QPaintEvent *event)即可. void Widget::paintEvent(QPaintEve ...
- BZOJ2878 [Noi2012]迷失游乐园
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- nova cell配置
Configuration option = Default value Description [cells] call_timeout = 60 (IntOpt) Seconds to wait ...
- 自己动手实现一个简化版的requireJs
一直想实现一个简单版本的requireJs,最直接的办法去看requireJs源码搞明白原理,但是能力有限requireJs的源码比想象的要复杂许多,看了几遍也不是很明白,最后通过搜索找到了一些有价值 ...
- js:for循环ul/li,获取当前被点击元素的id,以及给其他li设置属性
js:for循环ul/li,获取当前被点击元素的id,以及给其他li设置属性 <!doctype html> <html> <head> <meta char ...