时间:2017-03-22 来源:

使用React开发的一些注意要点

react是R系技术栈中最基础同时也是最核心的一环psd切图html,足可见其给力程度.下面对一些react日常开发中的注意事项进行罗列.

React的组件生命周期

react主要思想是构建可复用组件来构建用户界面.在react里面一切皆组件.每个组件里面都是有自己的生命周期,团队网页接活这个生命周期规定了组件的状态和方法,div切图排版分别在哪个阶段执行.下面附上一张RN的生命周期图: 

组件第一阶段:初始化、渲染以及装载完成; 

组件第二阶段:组件运行时候的状态 ①:状态变化引发组件的更新和重新渲染到更新完成 

                   ②:父组件属性变化引发组件的更新(是常见的组件之间传递数据和同步状态的手段):比如父组件登录了div页面, 'Emily', {name}!</div> }) } </div>,就用 HTML 规则解析;遇到代码块(以 { 开头), document.getElementById('example') );

变量 HelloMessage 就是相当于一个子组件类.通过this.props.name获取到了Muyy.

另外注意

  1. 所有组件类都必须有自己的 render 方法web外包,用于输出组件.
  2. 组件类的第一个字母必须大写,web外包否则会报错网页切图制作,for 属性需要写成 htmlFor ,这是因为 class 和 for 是 JavaScript 的保留字

子组件传向父(爷)组件

其实很简单,div+css+js切图概括起来就是:react中state改变了承接网站前端,组件才会update.父组件写好state和处理该state的函数,承接网站前端同时将函数名通过props属性值的形式传入子psd切图html,子调用父的函数,承接网页制作同时引起state变化.

例子1.这里如下图web外包,用户邮箱为父,web外包绿色框为子. 父组件为用户输入的邮箱设好state,同时写好处理state的函数div+css+js切图,这两个名称随意起;再将函数以props的形式传到子组件承接网站前端,子组件只需在事件发生时,承接网站前端调用父组件传过来的函数即可. 

 1 //子组件
 2 var Child = React.createClass({
 3     render: function(){
 4         return (
 5             <div>
 6                 请输入邮箱:<input onChange={this.props.handleEmail}/>
 7             </div>
 8         )
 9     }
10 });
11 //父组件,psd切图html此处通过event.target.value获取子组件的值
12 var Parent = React.createClass({
13     getInitialState: function(){
14         return {
15             email: ''
16         }
17     },
21     render: function(){
22         return (
23             <div>
24                 <div>用户邮箱:{this.state.email}</div>
25                 <Child name="email" handleEmail={this.handleEmail.bind(this)}/>
26             </div>
27         )
28     }
29 });
30 React.render(
31   <Parent />,
32   document.getElementById('test')
33 );
demo1 

例子2.有时候往往需要对数据做处理,手机页面切图排版再传给父组件div+css+js切图,比如过滤或者自动补全等等,div+css+js切图下面的例子对用户输入的邮箱做简单验证承接网站前端,event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" />

 1 //子组件psd切图html,handleVal函数处理用户输入的字符,psd切图html再传给父组件的handelEmail函数
 2 var Child = React.createClass({
 3     handleVal: function() {
 4         var val = this.refs.emailDom.value;
 5         val = val.replace(/[^0-9|a-z|\@|\.]/ig,
 8     render: function(){
 9         return (
10             <div>
11                 请输入邮箱:<input ref="emailDom" onChange={this.handleVal}/>
12             </div>
13         )
14     }
15 });
16 //父组件网页切图制作,通过handleEmail接受到的参数,div页面即子组件的值
17 var Parent = React.createClass({
18     getInitialState: function(){
19         return {
20             email: ''
21         }
22     },
26     render: function(){
27         return (
28             <div>
29                 <div>用户邮箱:{this.state.email}</div>
30                 <Child name="email" handleEmail={this.handleEmail.bind(this)}/>
31             </div>
32         )
33     }
34 });
35 React.render(
36   <Parent />,
37   document.getElementById('test')
38 );
demo2 

例子3.如果还存在孙子组件的情况呢?如下图,承接网站前端黑框为父psd切图html,绿框为子,承接网页制作红框为孙web外包,要求子孙的数据都传给爷爷.原理一样的,web外包只是父要将爷爷对孙子的处理函数直接传下去.

 1 //孙子,手机页面切图排版将下拉选项的值传给爷爷
 2 var Grandson = React.createClass({
 3     render: function(){
 4         return (
 5             <div>性别:
 6                 <select onChange={this.props.handleSelect}>
 7                     <option value="男">男</option>
 8                     <option value="女">女</option>
 9                 </select>
10             </div>
11         )
12     }
13 });
14 //div+css+js切图,将用户输入的姓名传给爹  
15 //对于孙子的处理函数,网页重构报价父只需用props传下去即可
16 var Child = React.createClass({
17     render: function(){
18         return (
19             <div>
20                 姓名:<input onChange={this.props.handleVal}/>
21                 <Grandson handleSelect={this.props.handleSelect}/>
22             </div>
23         )
24     }
25 });
26 //父组件承接网站前端,username和sex用来接收子孙传过来的值psd切图html,
31             sex: ''
32         }
33     },
37     handleSelect: function(event) {
38         this.setState({sex: event.target.value});
39     },
52   document.getElementById('test')
53 );
demo3

getDefaultProps && getInitialState

getDefaultProps 方法可以用来设置组件属性的默认值

var MyTitle = React.createClass({
  getDefaultProps : function () {
    return {
      title : 'Hello World'
    };
  },
  document.body
); 

getInitialState 方法可以用来设置初始状态

  getInitialState: function() {
    return {liked: false};
  },

获取真实的DOM节点

从组件获取真实 DOM 的节点,页面div重构这时就要用到 ref 属性

var MyComponent = React.createClass({
  handleClick: function() {
    this.refs.myTextInput.focus();
  },
  document.getElementById('example')
);

上面代码中web外包,组件 MyComponent 的子节点有一个文本输入框,web外包用于获取用户的输入.这时就必须获取真实的 DOM 节点网页切图制作,虚拟 DOM 是拿不到用户输入的.为了做到这一点,div页面文本输入框必须有一个 ref 属性div+css+js切图,然后 this.refs.[refName] 就会返回这个真实的 DOM 节点.

需要注意的是,div+css+js切图由于 this.refs.[refName] 属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,承接网站前端才能使用这个属性psd切图html,否则会报错.上面代码中,承接网页制作通过为组件指定 Click 事件的回调函数web外包,确保了只有等到真实 DOM 发生 Click 事件之后,web外包才会读取 this.refs.[refName] 属性.

React 组件支持很多事件网页切图制作,除了 Click 事件以外,手机页面切图排版还有 KeyDown 、CopyScroll 等div+css+js切图,完整的事件清单请查看官方文档.

点击次数:6929
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日【Java二十周年】回忆我与Java的点点滴滴2015年04月13日aboutgpdbpasswordmd5【移动开发】2014年11月27日【Servlet】深入研究GenericServlet2015年06月11日http_load基准测试(整站式测试) 【综合】2015年01月19日JAVA设计模式(16):行为型-策略模式(Strategy) 【编程语言】2015年05月15日JavaScript语法 【移动开发】2015年01月13日CI框架学习之三(常用操作类) 【编程语言】2015年03月24日Spark入门实战系列--1.Spark及其生态圈简介2015年08月05日利用ASP.NET技术动态生成HTML页面2014年01月29日HTML学习笔记之一(input文件选择框的封装) 【综合】2015年06月03日URL,URI和URN之间的区别 1,收藏 ,,2016年06月23日HDU5141LISagain【编程语言】2014年12月17日百度坐标和国际坐标之间的转换【移动开发】2014年12月09日KMP解决串的模式匹配问题 【综合】2014年11月04日CodeforcesRound#274(Div.1)——C.RidinginaLift 【移动开发】2014年12月17日对输入文本框的内容作出检测2014年01月28日什么是域名?2014年01月28日windows下制造内存短缺的狠招【综合】2015年04月13日开发基于Apache服务器上的CGI程序【移动开发】2014年11月20日湖南省第十届大学生计算机程序设计竞赛:酷酷的单词 【编程语言】2015年03月18日C#可以利用反射给只读属性赋值吗? 【编程语言】2015年05月07日jquery图片截取工具jquery.imagecropper.js2014年01月29日LeetCode241——DifferentWaystoAddParentheses 【编程语言】2015年08月15日linux平台学x86汇编(八):条件跳转【编程语言】2015年05月11日git分支使用 【综合】2015年04月17日你应当如何学习C++(以及编程)(rev#1)2016年11月08日Oracle生成随机日期时间 【综合】2015年05月13日论手速【互联网】2014年12月03日剑指offer系列源码-不用加减乘除做加法【编程语言】2014年12月16日Android屏幕适配全攻略(最权威的官方适配指导) 【数据库】2015年05月25日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)