• 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属性

  • 相关阅读:
    2019年湘潭大学程序设计竞赛(重现赛)
    牛客练习赛43
    2251: Code Cleanups
    【软件工程】读《构建之法》
    20150401 作业2 结对 四则运算
    四则运算
    Unity3d网格合并2
    Unity网格合并_材质合并
    Unity 5 Stats窗口
    Unity3D研究院之Unity5.x运行时动态更新烘培贴图
  • 原文地址:https://www.cnblogs.com/heroy/p/5486963.html
Copyright © 2020-2023  润新知