深入探讨前端框架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 相关文章推荐
JavaScript?Apple设备检测示例代码
Nov 15 Javascript
jQuery异步获取json数据方法汇总
Dec 22 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
Aug 29 Javascript
vue中echarts3.0自适应的方法
Feb 26 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
Mar 19 Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 Javascript
Nuxt的动态路由和参数校验操作
Nov 09 Javascript
利用 JavaScript 实现并发控制的示例代码
Dec 31 Javascript
Vue+Flask实现图片传输功能
Apr 01 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
延长phpmyadmin登录时间的方法
2011/02/06 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
php Session存储到Redis的方法
2013/11/04 PHP
深入分析PHP设计模式
2020/06/15 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
python中的函数用法入门教程
2014/09/02 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
Python 实现微信自动回复的方法
2020/09/11 Python
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
银行委托书范本
2014/09/28 职场文书
西安大雁塔导游词
2015/02/10 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis