ITPub博客

首页 > IT职业 > IT图书 > 元芳,Es 5-6-7下的React你怎么看?

元芳,Es 5-6-7下的React你怎么看?

IT图书 作者:micromad 时间:2021-09-09 09:45:06 0 删除 编辑

先来个干货,react 的render 循环数字

{  for(var i=0;isssssssss
  } }

肯定是不行的

可以写成

    {
          [...Array(10)].map((item,index) => {         return 
sssssssss
            })           }

1。React 里面 export 出来的函数arguments.length 一直为0。

虽然你能回去传进去的值

//获取非行间样式export const getStyle = (obj,attr) => {  //arguments.length 居然为0
  console.log(arguments.length , obj , attr )  if(obj.currentStyle){    return obj.currentStyle[attr];
  }  else{    return document.defaultView.getComputedStyle(obj,false)[attr];
  }
}

2。创建组件

es5

var XXXXXX = React.createClass({//好多钩子componentDidMount : function() { }, render: function() { return  }
});

es6

import React , {Component} from 'react';class Error404 extends Component {

  render(){    return (
      

404 containers

      
)   } }export default Error404

3.getDefaultProps和propTypes

es5

//设置默认属性getDefaultProps: function() { return {title:'hehe'}; },//属性校验器,表示必须是stringpropTypes: { title:React.PropTypes.string, },

es6

//属性校验器,表示改属性必须是bool,否则报错 xxxxxx.propTypes={title: React.PropTypes.bool}//设置默认属性xxxxxx.defaultProps={title:'hehe'};

es7

//一个关键字static。和其他语言越来越接近static defaultProps(){  return {
title : 'hehe'}

4.ref 的区别

例如某个class


        
  • 1
  •     
  • 2

es5 以前应该是

//才是element 对象React.getDOMNode(this.refs.TileTab)

es 6 下面是

直接是element 对象,不需要getDOMNodecss(this.refs.TileTab,'display',dis)(this.refs.TileText,'border','1px solid rgba(27, 160, 225, 1)');

5.在记下`` 的使用。不记得叫什么,反正能代替''双单引号,在swift 中有个叫法是字符串插值

//swift 代码let name = "liucunzhang"let str = "hellow \(name)"

js 代码

getLevel(num, str) {    let b = false;    let arrs = this.levels.slice(0, num - 1);
    arrs.map(arr => {
      arr.map(strs => {        if (strs.substring(1, strs.length) === str) {
          b = true;
        }
      })
    })    //看这里
    return `${!b ? 'on' : ''}${num % 3 === 0 && num 

目前就想到这5个区别!下面在记下React 的事件系统

React 的事件系统,都是些做过兼容的合成事件

React 标准化了事件对象,因此在不同的浏览器中都会有相同的属性。

如下的事件处理器在事件冒泡阶段触发。要在捕获阶段触发某个事件处理器,在事件名字后面追加 Capture
字符串;例如,使用 onClickCapture
而不是 onClick
来在捕获阶段处理点击事件。

剪贴板事件

事件名:

onCopy
onCut
onPaste

属性:


DOMDataTransfer
clipboardData

键盘事件:

事件名:

onKeyDown
onKeyPress
onKeyUp

属性:
boolean
altKeyNumber
charCodeboolean
ctrlKeyfunction
getModifierState(key)String
keyNumber
keyCodeString
localeNumber
locationboolean
metaKeyboolean
repeatboolean
shiftKeyNumber
which

焦点事件

事件名:

onFocus
onBlur

属性:


DOMEventTarget
relatedTarget

表单事件

事件名:

onChange
onInput
onSubmit

鼠标事件

事件名:

onClick
onDoubleClick
onDrag
onDragEnd
onDragEnter
onDragExit
onDragLeaveonDragOver
onDragStart
onDrop
onMouseDown
onMouseEnter
onMouseLeaveonMouseMove
onMouseOut
onMouseOver
onMouseUp

属性:

boolean
altKeyNumber
buttonNumber
buttonsNumber
clientXNumber
clientYboolean
ctrlKeyfunction
getModifierState(key)boolean
metaKeyNumber
pageXNumber
pageYDOMEventTarget
relatedTargetNumber
screenXNumber
screenYboolean
shiftKey

触摸事件

为了使触摸事件生效,在渲染所有组件之前调用React.initializeTouchEvents(true)
。
事件名:

onTouchCancel
onTouchEnd
onTouchMove
onTouchStart

属性:
boolean
altKeyDOMTouchList
changedTouchesboolean
ctrlKeyfunction
getModifierState(key)boolean
metaKeyboolean
shiftKeyDOMTouchList
targetTouchesDOMTouchList
touches

UI 事件

事件名:
onScroll

属性:
Number
detailDOMAbstractView
view

鼠标滚轮滚动事件

事件名:
onWheel

属性:
Number
deltaModeNumber
deltaXNumber
deltaYNumber
deltaZ

好了,就这么多
END ~~~



作者:二月长河
链接:https://www.jianshu.com/p/e040352252b0


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2763/viewspace-2811825/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-16

  • 博文量
    75
  • 访问量
    576