深入探讨前端框架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 相关文章推荐
prototype与jquery下Ajax实现的差别
Sep 13 Javascript
Extjs 几个方法的讨论
Jan 28 Javascript
Javascript继承机制的设计思想分享
Aug 28 Javascript
jQuery版仿Path菜单效果
Dec 15 Javascript
客户端js判断文件类型和文件大小即限制上传大小
Nov 20 Javascript
require.js配合插件text.js实现最简单的单页应用程序
Jul 12 Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
优化Vue中date format的性能详解
Jan 13 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
Mar 09 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 Javascript
Angular处理未可知异常错误的方法详解
Jan 17 Javascript
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
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
jQuery遍历Table应用示例
2014/04/09 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
详解在Python和IPython中使用Docker
2015/04/28 Python
Python使用gensim计算文档相似性
2016/04/10 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
Python入门教程之运算符与控制流
2016/08/17 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
公司综合部的成员自我评价分享
2013/11/05 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
项目投资意向书
2014/04/01 职场文书
社区志愿者活动方案
2014/08/18 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
如何利用golang运用mysql数据库
2022/03/13 Golang