当前位置: 首页 > news >正文

贵州华瑞网站建设有限公司amh wordpress伪静态设置

贵州华瑞网站建设有限公司,amh wordpress伪静态设置,山东网络推广公司,成都培训机构排名前十reactive源码解析 总结一句: reactive是个函数。reactive函数返回了一个createReactiveObject函数,createReactiveObject又返回了一个“经new Proxy实例化”的对象。 详细介绍: 我们使用时传给reactive函数一个对象类型target,reactive又将target传给cr…

reactive源码解析

总结一句: reactive是个函数。reactive函数返回了一个createReactiveObject函数,createReactiveObject又返回了一个“经new Proxy实例化”的对象。
详细介绍: 我们使用时传给reactive函数一个对象类型target,reactive又将target传给createReactiveObject函数做为第一个参数,createReactiveObject接收三个参数,第一个是taget,第二个是mutableHandlers,第三个是reactiveMap,最后对target使用proxy实例化,并将实例化的对象返回。其中mutableHandlers是一个对象,里面有get set函数用于收集依赖和触发依赖,reactiveMap是一个经过new WeakMap的实例化容器,用于收集响应式数据。

  • mutableHandlers里有get set函数
    1、get函数内部除了使用Reflect.get来获取值并返回外,还使用track函数进行收集依赖。track函数是如何收集依赖的呢?实例化一个全局WeakMap变量targetMap,当成所有响应式数据的收集依赖容器,把数据本身target当成targetMap的key,实例化一个Map作为值取名depsMap,而depsMap内把数据内的属性做为key,实例化一个Set取名为dep作为值,而dep内存着这个数据对应属性对应的所有依赖。
    2、set函数内部除了使用Reflect.set设置值并返回外,还使用trigger函数触发依赖。trigger是怎么触发依赖的呢?首先先从全局变量依赖容器targetMap中根据本身数据taget获取数据取名depsMap,如果没有depsMap直接结束函数,有depsMap再从depsMap里根据对应的属性获取出dep,如果没有dep就结束函数,有dep就遍历里面的所有元素并调用run()函数重新触发里面的所有依赖。
  • reactiveMap是使用new WeakMap出来的收集所有响应式数据的全局变量容器
    1、当数据将要new proxy前,需要根据数据target从容器reactiveMap中获取数据来判断该数据是不是已经被响应式过了,能获取到说明已经响应式过则直接返回即可,没有获取到使用new proxy响应式数据,并把响应式过的数据存在reactiveMap容器中。
  1. 为什么reactive只能对复杂类型进行响应式?
    因为reactive内部使用的是proxy,而proxy只能接收复杂类型,不能接收简单类型。
  2. 为什么reactive内部的set get函数 需要调用Reflect.get Reflect.set呢?
    因为有时候我们代码的this并不是指向proxy,这样都导致set get内触发不正确,而Reflect.get Reflect.set的第三个参数可以让this直接指向proxy
http://www.sczhlp.com/news/115003/

相关文章:

  • 青岛做网站的公司j2ee只做网站
  • 网站开发飞沐wordpress上传图片x
  • 深圳网站开发外包哪家好营销方式
  • 怎么免费创建网站wordpress联系表单 数据库
  • 广西柳州网站建设电商网站有哪些功能
  • 印度喜欢用什么框架做外贸网站合肥瑶海区范围
  • 专业营销软件网站建设佛山网页开发
  • 如何知道别人的网站流量来自于哪里商贸公司起名字大全免费
  • 傻瓜式php网站开发工具取名字的网站 优帮云
  • 网站建设哪家go国内免费图片素材网站
  • 云服务器网站搭建长春网站制作都找源晟27
  • 泰国做企业网站怎么制作公司宣传图片
  • 来年做那个网站能致富网站一年费用
  • 怎样查询网站是否备案ftp中如何找到网站首页
  • 织梦小说网站模板下载百度推广登录平台app
  • 网站只收录主页网络事件营销
  • 泉州公司网站设计管理系统门户网站开发路线
  • 建站公司推广十堰最新新闻今天
  • 吉林市做网站的公司哪家好如何查网站外链
  • 上海网站建设咨学ui设计难不难
  • 莆田网站建设多少钱网站备案号怎么添加
  • 南京太阳宫网站建设网站 ftp信息
  • 红铃铛网站建设软件工程难学吗
  • 静安区网站开发WordPress的黑色
  • 免费无广告建站简易手机站
  • asp网站中停止后面代码的运行郴州网络推广服务
  • 广州做网站海珠信科网站建设与维护实训心得
  • 北京网站的建立网络营销工具介绍
  • 自动化产品的网站建设logo设计公司地址
  • 北京市专业网站建设国内最便宜机票网站建设