
React Native ,两个重点app。uiexplorer,这个是facebook把rn的所有功能的demo项目。另一个是f8app,f8app是facebook为了推广rn在f8大会上开源的一款app。
f8app使用了redux,持久化,flow,graphql等等技术....包含注册登录列表详情等等常用功能,还有日志,第三方接口使用。代码比较规范,架构合理。
极光推送个性化推送满足用户多种推送需要,有效提升用户体验,利用大数据人工智能技术,实现智能用户分群,提升消息点击率,推送安全包确保推送内容准确,拒绝运营事故。
1 .SyntheticEvent说到底是用来模拟原生事件的,如果我们自己实现一个事件来模拟原生事件.我们需要模拟什么?
1 .dispatchConfig
2 .事件公用属性定义
1 .oEvent.stopImmediatePropagation()//Immediate[ɪˈmi:diət] //当一个元素绑定多个事件处理程序的时候,事件会按照顺序全部执行,如果不想让后面的事件处理程序执行,就在当前事件里加这个方法,就不执行后面的事件处理程序了
2 .oEvent.preventDefault()(在ie低版本中用oEvent.returnValue=true)//阻止事件的默认行为,比如阻止a的href链接。在智能设讲用return false。
2 .eventPhase
3 .bubbles:返回一个布尔值,表示当前事件是否会向DOM树上层元素冒泡
4 .cancel:表示改事件是否能被取消
5 .composed:表示是否可以穿过Shadow DOM和常规DOM之间的元素进行冒泡
6 .deepPath:一个由事件流所经过的DOM节点组成的数组
7 .defaultPrevented:一个布尔值,表示event.preventdefault方法是否取消了事件的默认行为
8 .timeStamp:事件创建的时间戳.
1 .插件对事件做分类,不同类型的事件的属性也不同
2 .主要有以下几种
3 .SyntheticMouseEvent 就是 SyntheticEvent 的一个派生类,由 ReactDOM 实现。鼠标事件
1 .SyntheticEvent 中有 preventDefault,stopPropagation,persist,isPersistent,destructor
2 .preventDefault
2 .stopPropagation:同样调用了原生事件的 stopPropagation 方法。大家可能发现了,此时事件已经冒泡到 Document 对象上了,调用原生事件的 stopPropagation 已经太晚了,这么做的目的是改变原生事件对象中的一些属性的值,保持两个事件属性值的统一。 同样,使用了 event.cancelBubble = true 的方式来兼容 IE
3 .persist:这个现在已经无效了.React 17之后不在使用事件池了
4 .dectructor:销毁事件属性,将事件的属性置为初始值
1 .React之前将所有的事件都绑定到了document,实际上的React是没有层级的,这样破坏了事件的捕获和冒泡机制
2 .实现原理:具体的做法是,inst 是触发事件的 fiber 对象,从这个 fiber 对象开始,一路向上,直到找到 HostComponent,这样就找到了事件传播的整条路径,然后从根节点自上而下触发 captured,之后自下而上触发 bubbled
1 .SytheticEvent本质上是对nativeEvent的一次封装.目的是为了达到与nativeEvent相同甚至更好的体验基础.保留进一步扩展的可能性,最终实现事件的跨平台
2 .SyntheticEvent 采用派生的方式,将事件具体的属性交由 SyntheticEvent 的子类来实现,自己只维护事件必须的字段
3 .为了避免 SyntheticEvent 对象频繁创建,更好的利用内存资源,提高性能,SyntheticEvent 会将事件对象缓存起来,最大缓存个数是 10
4 .
1 .ES6 Class写法中箭头函数可以不用单独的使用bind方式来绑定this,可以自动绑定
2 .useRef.current.addEventListener('click')这样来绑定
3 .尽量避免在React中混用合成事件和原生事件DOM事件.另外用reactEvent.nativeEvent.stopPropagation()来组织冒泡是不行的.阻止React冒泡的行为只能用React合成事件系统中.而且没办法阻止原生事件的冒泡.
4 .相反,原生事件中的阻止冒泡行为,却可以阻止React合成事件的传播
5 .原理:react的合成事件系统仅仅是原生DOM事件系统的一个子集.仅仅实现了DOM level3的事件接口,统一了浏览器的兼容问题
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)