深入探讨前端框架react


Posted in Javascript onDecember 09, 2015

摘要:

      最近公司要做一个嵌套在app中的应用,考虑着用Facebook的react来开发view,所以就研究了下。下面是我在开发中遇到的坑,希望能给你帮助。

项目地址:https://github.com/baixuexiyang/react
Issue:https://github.com/baixuexiyang/react/issues

欢迎star和fork!

react优势:

 •仅仅只要表达出你的应用程序在任一个时间点应该长的样子,然后当底层的数据变了,React 会自动处理所有用户界面的更新。

•数据变化后,React 概念上与点击“刷新”按钮类似,但仅会更新变化的部分。

 •React 都是关于构建可复用的组件,使代码复用、测试和关注分离(separation of concerns)更加简单。

注意点:

 1.加载组件的首字母大写,比如:<HeaderComponent />
 2.每一个组件的render最外层都要有一个包裹元素

 3.this.props不能修改,this.state可以修改

 4.页面oclick事件在ios中的Safari不起效果,onClick={this.detail.bind(this, item)} 需要使用其他方式,比如jQuery的绑定事件

 5.string转换成html,dangerouslySetInnerHTML={{__html: ''}}

 6.getInitialState:在组件挂载之前调用一次。返回值将会作为 this.state 的初始值。

getDefaultProps:在组件类创建的时候调用一次,然后返回值被缓存下来。如果父组件没有指定 props 中的某个键,则此处返回的对象中的相应属性将会合并到 this.props (使用 in 检测属性)。

 该方法在任何实例创建之前调用,因此不能依赖于 this.props。另外,getDefaultProps() 返回的任何复杂对象将会在实例间共享,而不是每个实例拥有一份拷贝。

 组件的生命周期:

componentWillMount:

服务器端和客户端都只调用一次,在初始化渲染执行之前立刻调用。

componentDidMount:

在初始化渲染执行之后立刻调用一次,仅客户端有效(服务器端不会调用)。

componentWillReceiveProps:

在组件接收到新的 props 的时候调用。在初始化渲染的时候,该方法不会调用。

shouldComponentUpdate:

在接收到新的 props 或者 state,将要渲染之前调用。该方法在初始化渲染的时候不会调用,在使用 forceUpdate 方法的时候也不会。

如果确定新的 props 和 state 不会导致组件更新,则此处应该 返回 false。

componentWillUpdate:

在接收到新的 props 或者 state 之前立刻调用。在初始化渲染的时候该方法不会被调用。

componentDidUpdate:

在组件的更新已经同步到 DOM 中之后立刻被调用。该方法不会在初始化渲染的时候调用。

componentWillUnmount:

在组件从 DOM 中移除的时候立刻被调用。

小结:

使用react开发,所有html都写在js文件里,所以开发起来不是很顺畅。推荐一个chrome插件:React Developer Tools

对于React,有一些认识误区,在此总结一下:

React不是一个完整的MVC框架,最多可以认为是MVC中的V(View),甚至React并不非常认可MVC开发模式;
React的服务器端Render能力只能算是一个锦上添花的功能,并不是其核心出发点,事实上React官方站点几乎没有提及其在服务器端的应用;

有人拿React和Web Component相提并论,但两者并不是完全的竞争关系,你完全可以用React去开发一个真正的Web Component;

React不是一个新的模板语言,JSX只是一个表象,没有JSX的React也能工作。

以上所述是关于前端框架react相关知识的全部内容,希望大家喜欢。

Javascript 相关文章推荐
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
Jan 10 Javascript
jQuery渐变发光导航菜单的实例代码
Mar 27 Javascript
js出生日期 年月日级联菜单示例代码
Jan 10 Javascript
JavaScript中奇葩的假值示例应用
Mar 11 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
jQuery判断复选框是否勾选的原理及示例
May 21 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
Angular2入门教程之模块和组件详解
May 28 Javascript
json数据传到前台并解析展示成列表的方法
Aug 06 Javascript
JS继承实现方法及优缺点详解
Sep 02 Javascript
JavaScript文档对象模型DOM
Nov 20 Javascript
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
JavaScript中rem布局在react中的应用
Dec 09 #Javascript
js获取鼠标位置实例详解
Dec 09 #Javascript
JavaScript常用基础知识强化学习
Dec 09 #Javascript
AngularJS实现元素显示和隐藏的几个案例
Dec 09 #Javascript
谈谈AngularJs中的隐藏和显示
Dec 09 #Javascript
jquery插件ajaxupload实现文件上传操作
Dec 09 #Javascript
js实现卡片式项目管理界面UI设计效果
Dec 08 #Javascript
You might like
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
3.从实例开始
2006/10/09 PHP
php中动态变量用法实例
2015/06/10 PHP
深入理解PHP内核(一)
2015/11/10 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
web.py在模板中输出美元符号的方法
2014/08/26 Python
深入学习python的yield和generator
2016/03/10 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
python print出共轭复数的方法详解
2019/06/25 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
娱乐地球:Entertainment Earth
2020/01/08 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
材料采购员岗位职责
2013/12/17 职场文书
书香校园建设方案
2014/05/02 职场文书
计算机专业求职信
2014/06/02 职场文书
经典禁毒标语
2014/06/16 职场文书
高中学校对照检查材料
2014/08/31 职场文书
行政经理岗位职责
2015/04/15 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
解析Redis Cluster原理
2021/06/21 Redis