深入探讨前端框架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的Cookies
Jan 16 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 Javascript
js与jquery回车提交的方法
Feb 03 Javascript
js实现登陆遮罩效果的方法
Jul 28 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
Jun 14 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 Javascript
js表达式与运算符简单操作示例
Feb 15 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
如何利用js在两个html窗口间通信
Apr 27 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
python调用java的jar包方法
2018/12/15 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
小学生班会演讲稿
2014/01/09 职场文书
捐款活动总结
2014/08/27 职场文书
工作表扬信
2015/01/17 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
python 实现图片特效处理
2022/04/03 Python