react学习笔记

React 学习
准备
  程序包控制台
    可以使用npm命令 npm install-package react.js
  nuget 搜索 react 安装对应版本的 reactjs.net
  添加///_reference.js来添加自动提示
API
  React
    创建组件类--ReactClass
      React.createClass(object specification)
      实现reader()方法
    创建ReactElement
      React.createElement(ReactClass,props,children...)
      ReactClass也可以是div,span
      属性
        type,
        props,
        key,
        ref
    React.createFactory(string/ReactClass type)
      批量创建某组件实例时用
      React.DOM.ul() 内置的html标签的工厂函数
    React.render--ReactComponent
      React.render(ReactElement element,DOMElement container,[function callback])
    React.unmountComponentAtNode(DOMElement container)
      移除,返回true移除成功,false是没有组件移除
    React.renderToString(ReactElement element)
      渲染为html字符串,仅在服务器端用,有利于快速,seo
    React.renderToStaticMarkup(ReactElement element)
      渲染为html字符串,和renderToString类似,但会去掉额外属性支付,
    React.isValidElement(* object)
      判断对象是否是一个 ReactElement
    React.DOM
      包装dom:例如,React.DOM.div(null, 'Hello World!')
    React.PropTypes
      包含公用类型,用于验证props
    React.initializeTouchEvents(boolean shouldUseTouch)
      配置启用处理触摸(touch)时间
    React.Children
      处理 this.props.children
        React.Children.map(object children, function fn [, object context])
          每个子集调用fn,map会返回对象
        React.Children.forEach(object children, function fn [, object context])
          遍历,不会返回对象
        React.Children.count(object children)
          返回组件总数
        React.Children.only(object children)
          返回仅有的子集,否则抛出异常

      默认prop值
        var ComponentWithDefaultProps = React.createClass({
          getDefaultProps: function() {
            return {
              value: 'default value'
            };
          }
        /* ... */
        });
      mixins 复用代码(嵌入式),high order (扩展式)
  ReactComponent
    组件方法中this可以访问实例,React之外只能用保存React.render的返回值访问,其他组件内可以通过refs
    setState(object nextState[, function callback])
      合并nextState和当前state
      不要直接改变this.state,而用setState来更新并触发ui更新
      setState之后,this.state并不一定马上同步,
      调用后总是触发重绘,除非实现了shouldComponentUpdate
    replaceState(object nextState[, function callback])
      类似setState,但之前的state将被删除
    forceUpdate([function callback])
      将会导致调用render()
    getDOMNode() 返回DOMElement
      获取dom节点
    isMounted()
      判断是否渲染
    setProps(object nextProps[, function callback])
      设置属性,触发渲染,但不可用于子组件
    replaceProps(object nextProps[, function callback])、
      替换
  Component 方法
    render 渲染返回组件
    getInitialState 初始state值
    getDefaultProps 初始props值
    propTypes 检验prop类型
    mixins 混合共享组件行为
    statics 静态方法
    displayName 调试信息
    componentWillMount 挂载,渲染之前调用
    componentDidMount 挂载,渲染之后调用
    componentWillReceiveProps 更新,接受到新props时调用,初始不调用
    shouldComponentUpdate 更新,接受到新的props或state之后,渲染之前 调用,,初始不调用
    componentWillUpdate 更新,接受到新的props或state之前,初始不调用
    componentDidUpdate 更新,组件更新到dom后调用,初始不调用
    componentWillUnmount 移除,组件从dom中移除时调用,
  表单组件
    默认的html标签的有对应的react组件
    交互属性
    value 用于input,textarea组件
    checked 用于checkbox,radio
    selected 用于option
    onChange input textarea 的value变化时,input的checked改变时,option的selected改变时
    受限组件
    设置了value的input是受限组件,渲染的html不能变更value,需要在onChange里用setState变更
    不受限组件
    没有设置value或为null的input为不受限组件
    或者设置defaultValue 设置初始值,select也支持defaultvalue
  事件系统
    虚拟事件对象,
      事件处理器将会传入虚拟事件对象的势力,有和浏览器本地事件一样的属性和方法
      nativeEvent 获取底层浏览器事件对象
      boolean bubbles
      boolean cancelable
      DOMEventTarget currentTarget
      boolean defaultPrevented
      number eventPhase
      boolean isTrusted
      DOMEvent nativeEvent
      void preventDefault()
      void stopPropagation()
      DOMEventTarget target
      number timeStamp
      string type
    支持的事件
      一般支持在事件冒泡阶段触发,
      要在捕获阶段触发某个事件处理器,
      剪贴板事件 onCopy onCut onPaste 属性:DOMDataTransfer clipboardData
      键盘事件 onKeyDown onKeyPress onKeyUp 属性:boolean altKey
        Number charCode
        boolean ctrlKey
        function getModifierState(key)
        String key
        Number keyCode
        String locale
        Number location
        boolean metaKey
        boolean repeat
        boolean shiftKey
        Number which
      焦点事件 onFocus onBlur 属性:DOMEventTarget relatedTarget
    表单事件 onChange onInput onSubmit 属性:
    鼠标事件 onClick onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp  属性:boolean altKey
      Number button
      Number buttons
      Number clientX
      Number clientY
      boolean ctrlKey
      function getModifierState(key)
      boolean metaKey
      Number pageX
      Number pageY
      DOMEventTarget relatedTarget
      Number screenX
      Number screenY
      boolean shiftKey
    触摸事件 onTouchCancel onTouchEnd onTouchMove onTouchStart
      渲染之前调用 React.initializeTouchEvents(true);
      属性
        boolean altKey
        DOMTouchList changedTouches
        boolean ctrlKey
        function getModifierState(key)
        boolean metaKey
        boolean shiftKey
        DOMTouchList targetTouches
        DOMTouchList touches
      UI事件
        onScroll 属性:Number detail DOMAbstractView view
      鼠标滚轮滚动事件 onWheel 属性:Number deltaMode Number deltaX Number deltaY Number deltaZ
  DOM的差异
    所有DOM的properties和attributes应该是驼峰命名,data-*和aria-*除外
    style属性接收一个带有驼峰命名的javascript对象,而不是一个css字符串
    所有事件对象和w3c规范一致,包括冒泡
    onChange 事件触发在字段改变而不是失去焦点时
  非DOM属性
    key 可选的唯一标识(兄弟节点中唯一,不需要全局唯一),组件在重新渲染时,顺序被打乱后可能造成销毁后重建,绑定key后能在检测时确保存在
    ref 绑定到reader输出的一个组件,可以通过this.refs.refname来方式组件实例
    dangerouslySetInnerHTML 提供插入纯html的能力


  标签和属性
    react支持所有html常用标签
    svg元素, react-art 插件支持渲染到canvas,svg货vml(ie-8)
    支持所有的data-*,aria-*属性,
    className,htmlFor
    驼峰命名,
    支持html标准属性
    svg属性

 

posted on 2016-05-12 19:06  Whyisalive  阅读(305)  评论(0编辑  收藏  举报