React之特点及常见用法
1、什么是React?
React是一个用于构建用户界面的JavaScript库。主要用于构建UI,很多人认为Reatc是MVC中的V(视图)。
React起源于Facebook的内部项目,用来架构Instrgram的网站(ins,一款图片分享的社交软件),并与2013年5月份开源。
React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。
2、React的特点?
(1)声明式设计
(2)高效:通过对DOM的模拟,最大限度的减少与DOM的交互。
(3)灵活:可以与已知的框架或库很好的配合。
(4)JSX:是js语法的扩展,不一定使用,但建议用。
(5)组件:构建组件,使代码更容易得到复用,能够很好地应用在大项目的开发中。
(6)单向响应的数据流:React实现了单向响应的数据流,从而减少了重复代码,这也是解释了它为什么比传统数据绑定更简单。
3、React的html的必备模板
<!DOCTYPE html>
<html>
<head>
<script src="react.js"></script>
<script src="react-dom.js"></script>
<script src="browser.min.js"></script>
</head>
<body>
<div id="example"></div>
<script type="text/babel">
// ** Our code goes here! **
</script>
</body>
</html>
(1) script
标签的 type
属性为 text/babel
。因为 React 独有的 JSX 语法,跟 JavaScript 不兼容。
凡是使用 JSX 的地方,都要加上 type="text/babel"
。
(2)
三个库: react.min.js
、react-dom.min.js
和 Browser.min.js
,它们必须首先加载。
react.js
是 React 的核心库,react-dom.js
是提供与 DOM 相关的功能,
Browser.js
的作用是将 JSX 语法转为 JavaScript 语法,这一步很消耗时间,实际上线的时候,应该将它放到服务器完成。
4、React JSX 的优点以及常见用法
React使用JSX来代替常规的javascript语法,看起来很像xml的javascript的语法扩展。
JSX优点:(1)JSX执行更快,因为它对编译js代码进行了优化(2)它是类型安全的,在编译过程中就能发现错误(3)使用jsx编译模板更加简洁快速。
使用JSX:
(1)代码中嵌套多个html标签,需要使用一个div元素包裹它们,实例中的p标签使用了自定义属性:data-前缀 。
ReactDOM.render(
<div>
<h1>菜鸟教程</h1>
<h2>欢迎学习 React</h2>
<p data-myattribute = "somevalue">这是一个很不错的 JavaScript 库!</p>
</div> ,
document.getElementById('example')
);
- (2)JSX表达式
ReactDOM.render(
<h1>{1+1*4}</h1>,
document.getElementById('example')
);
(3)样式
React 推荐使用内联样式。我们可以使用 camelCase 语法(骆驼命名法,除第一个单词外的其他首字母大写)来设置内联样式.
React 会在指定元素数字后自动添加 px 。
- var myStyle = {
- fontSize: 100,
- color: '#F00'
- };
- ReactDOM.render(
- <h1 style = {myStyle}>菜鸟教程</h1>,
- document.getElementById('example')
- );
- (4)注释
注释需要写在花括号中:(外加div包裹)
ReactDOM.render(- <div>
- <h1>菜鸟教程</h1>
- {/*注释...*/}
- </div>,
- document.getElementById('example')
- );
- (5)数组
JSX 允许在模板中插入数组,数组会自动展开所有成员:
var arr = [- <h1>菜鸟教程</h1>,
- <h2>学的不仅是技术,更是梦想!</h2>
- ];
- ReactDOM.render(
- <div>{arr}</div>,
- document.getElementById('example')
- );
- (6)HTML 标签 vs React 组件
- React 可以渲染 HTML 标签 (strings) 或 React 组件 (classes)。
- 要渲染 HTML 标签,只需在 JSX 里使用小写字母的标签名。
var myDivElement = <div className="foo" />;- ReactDOM.render(myDivElement, document.getElementById('example'));
- 要渲染 React 组件,只需创建一个大写字母开头的本地变量。
var MyComponent = React.createClass({/*...*/});- var myElement = <MyComponent someProperty={true} />;
- ReactDOM.render(myElement, document.getElementById('example'));
React 的 JSX 使用大、小写的约定来区分本地组件的类和 HTML 标签。
由于JSX 就是JavaScript,一些标识符像class
和for
不建议作为 XML 属性名。作为替代,ReactDOM使用className
和htmlFor
来做对应的属性。
5、React State(状态)
React 把组件看成是一个状态机(State Machines)。通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致。
React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。
以下实例中创建了 LikeButton 组件,getInitialState 方法用于定义初始状态,也就是一个对象,这个对象可以通过 this.state 属性读取。
当用户点击组件,导致状态变化,this.setState 方法就修改状态值,每次修改以后,自动调用 this.render 方法,再次渲染组件。
- 参考文献:
阮一峰React入门实例教程 http://www.ruanyifeng.com/blog/2015/03/react.html
React解决了前端开发中的哪些痛点? https://www.zhihu.com/question/39825457?sort=created
React.js 初学者应该知道的9件事 http://www.oschina.net/news/75530/9-things-every-reactjs-beginner-should-know
React之特点及常见用法的更多相关文章
- Linux中find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- php中的curl使用入门教程和常见用法实例
摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- iOS开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- [转]EasyUI——常见用法总结
原文链接: EasyUI——常见用法总结 1. 使用 data-options 来初始化属性. data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我 ...
- NSString常见用法总结
//====================NSStirng 的常见用法==================== -(void)testString { //创建格式化字符串:占位符(由一个%加一个字 ...
- [转]Linux中find常见用法示例
Linux中find常见用法示例[转]·find path -option [ -print ] [ -exec -ok command ] {} \;find命令的参 ...
随机推荐
- 一个简单的tcp代理实现
There are a number of reasons to have a TCP proxy in your tool belt, bothfor forwarding traffic to b ...
- A - 活动安排问题(贪心)
A - 活动安排问题 有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? Input第一行一个正整数n (n <= ...
- Spring Boot的每个模块包详解
Spring Boot的每个模块包详解,具体如下: 1.spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2.spring-boot-s ...
- wx-xcx
一.因测试小程序,搜索了各种测试小程序的注意点,为方便后续查看,暂时整理罗列如下: 1.留意分享功能的权限:如果某页面对游客访问有权限限制,则需要设置取消其分享功能. 2.小程序强制更新功能:新版小程 ...
- GitHub CEO:GitHub 十年,感谢有你
简评:不知为何,总感觉 GitHub 成立不止 10 年了,你们有这种错觉么? 本文是 GitHub 联合创始人兼 CEO:Chris Wanstrath 在计算机世界杂志写的文章. 当我们回顾 Gi ...
- 老男孩Day18作业:后台用户管理
一.作业需求: 1.用户组的增删改查 2.用户增删该查 - 添加必须是对话框 - 删除必须是对话框 - 修改,必须显示默认值 3.比较好看的页面 二.博客地址:https://www.cnblogs. ...
- 牛客挑战赛30-T3 小G砍树
link 题目大意: n个节点的带标号无根树.每次选择一个度数为1的节点并将它从树上移除.问总共有多少种不同的方式能将这棵树删到只剩 1 个点.两种方式不同当且仅当至少有一步被删除的节点不同. 题解: ...
- Sublime的一些问题记录
1.默认的中文字体显示异常(参考:关于最新版的Sublime Text 3中默认的中文字体样式显示异常的问题) 1. 选择Perferences(首选项)--> settings(设置) 2. ...
- Qt 学习之路 2(58):编辑数据库外键
Qt 学习之路 2(58):编辑数据库外键(skip) 豆子 2013年7月12日 Qt 学习之路 2 13条评论 前面几章我们介绍了如何对数据库进行操作以及如何使用图形界面展示数据库数据.本章我们将 ...
- angularjs指令弹框点击空白处隐藏及常规方法
效果图展示: 第一种方法:angularjs自定义指令: 指令: app.directive('onBlankHide', function () { return { restrict: 'A', ...