深入探讨前端框架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 相关文章推荐
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
Jul 13 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
jquery清空表单数据示例分享
Feb 13 Javascript
javascirpt实现2个iframe之间传值的方法
Jun 30 Javascript
详解Vue2.0之去掉组件click事件的native修饰
Apr 20 Javascript
JS实现简单抖动效果
Jun 01 Javascript
在vscode里使用.vue代码模板的方法
Apr 28 Javascript
vue实现搜索过滤效果
May 28 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 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安装问题
2006/10/09 PHP
提高PHP编程效率的方法
2013/11/07 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
filemanage功能中用到的common.js
2007/04/08 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
Python3 能振兴 Python的原因分析
2014/11/28 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
国际象棋商店:The Chess Store
2018/07/09 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
安踏广告词改编版
2014/03/21 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
保护地球的宣传语
2015/07/13 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
nginx之queue的具体使用
2022/06/28 Servers