HTML5技术

通往全栈工程师的捷径 —— react - 腾讯bugly(2)

字号+ 作者:H5之家 来源:H5之家 2015-11-25 08:51 我要评论( )

这个,叫做竹笕,是中日传统禅文化中常见的庭院装饰品,它的构造可简单可复杂,但原理很简单,比如这个竹笕,水从竹笕顶部入口流入内部,并按照固定的顺序从上向下依次流入各个小竹筒,然后驱动水轮转动。对于强迫

这个,叫做竹笕,是中日传统禅文化中常见的庭院装饰品,它的构造可简单可复杂,但原理很简单,比如这个竹笕,水从竹笕顶部入口流入内部,并按照固定的顺序从上向下依次流入各个小竹筒,然后驱动水轮转动。对于强迫症患者来说,观赏竹笕的绝对是一种很享受的过程的最爱,你会发现这些小玩意竟然能这么流畅的协调起来,好神奇。

如果竹笕是一个组件的话,那么水就是组件的数据流。

在React中,数据流是自上而下单向的从父节点传递到子节点,所以组件是简单且容易把握的,他们只需要从父节点提供的props中获取数据并渲染即可。如果顶层组件的某个prop改变了,React会递归地向下遍历整棵组件数,重新渲染所有使用这个属性的组件。

这个是前面看到的 Article 题组件,拥有一个叫做 articles 的属性。

在组件内部,可以通过this.props来访问props,props是组件唯一的数据来源,对于组件来说

props永远是只读的。

组件的属性类型如果不进行声明和验证,那么很可能使用者传给你的属性值或者类型是无效的,那会导致一些意料之外的故障。好在React已经为我们提供了一套非常简单好用的属性校验机制——

React有一个PropTypes属性校验工具,经过简单的配置即可。当使用者传入的参数不满足校验规则时,React会给出非常详细的警告,定位问题不要太容易。

PropTypes包含的校验类型包括基本类型、数组、对象、实例、枚举——

以及对象类型的深入验证等等。如果内置的验证类型不满足需求,还可以通过自定义规则来验证。 如果某个属性是必须的,在类型后面加上 .isRequired 即可。

React的一大创新,就是把每一个组件都看成是一个状态机,组件内部通过state来维护组件状态的变化,这也是state唯一的作用。

state一般和事件一起使用,我们先看state,然后看看state和事件怎样结合。

这是一个简单的开关组件,开关状态会以文字的形式表现在按钮的文本上。

首先看render方法,返回了一个button元素,给button注册了一个事件用来处理点击事件,在点击事件中对state的on字段取反,并执行 this.setState() 方法设置on字段的新值。一个开关组件就完成了。

组件渲染完成后,必须有UI事件的支持才能正常工作。

React通过将事件处理器绑定到组件上来处理事件。

React事件本质上和原生JS一样,鼠标事件用来处理点击操作,表单事件用于表单元素变化等,Rreact事件的命名、行为和原生JS差不多,不一样的地方是React事件名区分大小写。

比如这段代码中,Article组件的section节点注册了一个onClick事件,点击后弹出alert。

有时候,事件的处理器需要由组件的使用者来提供,这时可以通过props将事件处理器传进来。

这个是刚才那个Article组件的使用者,它提供给Article组件的props中包含了一个onClick属性,这个onClick指向这个组件自身的一个事件处理器,这样就实现了在组件外部处理事件回调。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • WEB前端工程师(实践)制作天气预报难度:简单 - SessionOne

    WEB前端工程师(实践)制作天气预报难度:简单 - SessionOne

    2016-10-16 14:00

  • 半路出家的仓库管理员如何成为一个好的前端工程师 - 柳郎中

    半路出家的仓库管理员如何成为一个好的前端工程师 - 柳郎中

    2016-05-27 10:00

  • [web建站] 极客WEB大前端专家级开发工程师培训视频教程 - 福吧资源网

    [web建站] 极客WEB大前端专家级开发工程师培训视频教程 - 福吧资源网

    2016-05-03 13:05

  • 成为全栈工程师真的好吗? - 栈客

    成为全栈工程师真的好吗? - 栈客

    2016-04-19 16:00

网友点评