zoukankan      html  css  js  c++  java
  • React框架 坑及解决方法

    原始地址:http://h5shop.org/article/50/

    React原则

    React不多做介绍,就是Facebook的一个开源JS框架,专注的层面为View层,不包括数据访问层或者那种Hash路由(不过React 有插件支持),与Angularjs,Emberjs等大而全的框架不同,React专注的中心是Component,即组件,React认为一切页面元 素都可以抽象成组件,比如一个表单,或者表单中的某一项。

    常用技术要点

    props

    每一个组件都有可变与不可变的属性,props就是不可变的属性,当props改变时,组件的绘制方法不会被调用。

    states

    states就是组件的可变属性,states的改变会触发组件的render函数,react与其他mvvm框架的最大的不同点就是,react 组件可以想象成一个状态机,状态的改变会重绘UI,然后根据 dom diff 算法来绘制UI,而其他的mvvm框架则是对js对象的dirty check(Angularjs)或者defineProperty时指定的回调函数(Emberjs),因此,状态机制与dom diff的存在声称React更快。

    我们在设计React组件时如何灵活的运用props与state是一个非常关键的要点。

    refs

    refs这个点主要用在上级组件调用下级组件的场景,这个场景非常多见。

    componentDidMount

    组件UI渲染完毕后调用,常用在这种业务场景:调用ajax获得数据后,渲染UI。

    state的改变会触发render

    正如上文中所说,React组件是一个一个状态机,state的改变会改变状态,会触发重绘,对于state的设计是对React组件设计的关键。

    各种坑

    触摸事件

    React中的触摸事件仅用三种,touchstart, touchend, touchend,可是这种会有问题,有时候我需要滚动页面的时候,很容易触发某一个元素的touchend事件,为此笔者找了一个React第三方组件,React-tappable

    还无意中发现一个Android与iOS的不同之处

    input在disable且readonly之后,onClick会在iOS上触发不起来,onTouchEnd又会在Android上把键盘弹出来,这边笔者做了个Hack,iOS下用onTouchEnd,Android下用onClick,就正常了。

    高级技术要点

    mixin

    曾经跟一个朋友讨论,封装utils模块为纯js模块好还是React式的模块好的问题,他给我了一个概念,React mixin,本来自己在开发中确实写了很多可复用的小组件,但由于没有过多的了解React周边的相关知识,因此忽略了React mixin,笔者认为以后可以探究一下这个技术点。

    React原则

    React不多做介绍,就是Facebook的一个开源JS框架,专注的层面为View层,不包括数据访问层或者那种Hash路由(不过React 有插件支持),与Angularjs,Emberjs等大而全的框架不同,React专注的中心是Component,即组件,React认为一切页面元 素都可以抽象成组件,比如一个表单,或者表单中的某一项。

    常用技术要点

    props

    每一个组件都有可变与不可变的属性,props就是不可变的属性,当props改变时,组件的绘制方法不会被调用。

    states

    states就是组件的可变属性,states的改变会触发组件的render函数,react与其他mvvm框架的最大的不同点就是,react 组件可以想象成一个状态机,状态的改变会重绘UI,然后根据 dom diff 算法来绘制UI,而其他的mvvm框架则是对js对象的dirty check(Angularjs)或者defineProperty时指定的回调函数(Emberjs),因此,状态机制与dom diff的存在声称React更快。

    我们在设计React组件时如何灵活的运用props与state是一个非常关键的要点。

    refs

    refs这个点主要用在上级组件调用下级组件的场景,这个场景非常多见。

    componentDidMount

    组件UI渲染完毕后调用,常用在这种业务场景:调用ajax获得数据后,渲染UI。

    state的改变会触发render

    正如上文中所说,React组件是一个一个状态机,state的改变会改变状态,会触发重绘,对于state的设计是对React组件设计的关键。

    各种坑

    触摸事件

    React中的触摸事件仅用三种,touchstart, touchend, touchend,可是这种会有问题,有时候我需要滚动页面的时候,很容易触发某一个元素的touchend事件,为此笔者找了一个React第三方组件,React-tappable

    还无意中发现一个Android与iOS的不同之处

    input在disable且readonly之后,onClick会在iOS上触发不起来,onTouchEnd又会在Android上把键盘弹出来,这边笔者做了个Hack,iOS下用onTouchEnd,Android下用onClick,就正常了。

    高级技术要点

    mixin

    曾经跟一个朋友讨论,封装utils模块为纯js模块好还是React式的模块好的问题,他给我了一个概念,React mixin,本来自己在开发中确实写了很多可复用的小组件,但由于没有过多的了解React周边的相关知识,因此忽略了React mixin,笔者认为以后可以探究一下这个技术点。

  • 相关阅读:
    折半枚举(双向搜索)
    弹性碰撞
    集合的整数表示
    反转(开关问题)
    尺取法
    floor函数用法
    二分搜索
    4. 差分约束系统
    二叉树的表达式求值
    关于移动app开发的一些不错的站点
  • 原文地址:https://www.cnblogs.com/examine/p/5016335.html
Copyright © 2011-2022 走看看