深入探讨前端框架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 相关文章推荐
CSS JavaScript 实现菜单功能 改进版
Dec 09 Javascript
jQuery 使用手册(一)
Sep 23 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 Javascript
web css实现整站样式互相切换
Oct 29 Javascript
jQuery实现自定义下拉列表
Jan 05 Javascript
基于javascript实现单选及多选的向右和向左移动实例
Jul 25 Javascript
AngularJS 使用$sce控制代码安全检查
Jan 05 Javascript
js事件处理程序跨浏览器解决方案
Mar 27 Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 Javascript
Bootstrap 实现查询的完美方法
Oct 26 Javascript
详谈js模块化规范
Jul 07 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
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
php和asp语法上的区别总结
2019/05/12 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
Python 3中print函数的使用方法总结
2017/08/08 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
护理自我鉴定范文
2013/10/06 职场文书
土木工程求职信
2014/05/29 职场文书
见习报告格式要求
2014/11/04 职场文书
城南旧事电影观后感
2015/06/16 职场文书
值班管理制度范本
2015/08/06 职场文书
pytorch实现手写数字图片识别
2021/05/20 Python
Redis实现一个账号只能登录一个设备
2022/04/19 Redis
docker 制作mysql镜像并自动安装
2022/05/20 Servers