深入探讨前端框架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 相关文章推荐
JS实现鼠标单击与双击事件共存
Mar 08 Javascript
jQuery中after()方法用法实例
Dec 25 Javascript
同一个网页中实现多个JavaScript特效的方法
Feb 02 Javascript
动态的9*9乘法表效果的实现代码
May 16 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
React 使用browserHistory项目访问404问题解决
Jun 01 Javascript
微信小程序实现天气预报功能
Jul 18 Javascript
微信小程序获取用户信息并保存登录状态详解
May 10 Javascript
vue实现滑动超出指定距离回顶部功能
Jul 31 Javascript
ligerUI的ligerDialog关闭刷新的方法
Sep 27 Javascript
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
Mar 12 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显示MySQL数据的三种方法
2008/06/05 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
分享php邮件管理器源码
2016/01/06 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
突发奇想的一个jquery插件
2010/11/19 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python中的super用法详解
2015/05/28 Python
Python与R语言的简要对比
2017/11/14 Python
pycharm安装和首次使用教程
2018/08/27 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
分享一个python的aes加密代码
2020/12/22 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
旺仔牛奶广告词
2014/03/20 职场文书
七一建党节演讲稿
2014/09/11 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
python基础之匿名函数详解
2021/04/21 Python
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA