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

石景山网站制作建设公司气象网站建设管理总结

石景山网站制作建设公司,气象网站建设管理总结,洞头网站建设,自己做的html网页怎么发布一、什么是副作用函数和响应式数据? 副作用函数: 可以产生副作用的函数,那么什么是副作用呢?举个栗子: let count 1function effect() {count }function fn() {if (count 1) {console.log(执行1)} else {console.l…

一、什么是副作用函数和响应式数据?

副作用函数: 可以产生副作用的函数,那么什么是副作用呢?举个栗子:

let count = 1function effect() {count++
}function fn() {if (count == 1) {console.log('执行1')} else {console.log('执行2')}
}
effect()
fn()

当执行effect函数时会修改全局变量count的值,count值的修改就是effect函数执行带来的副作用,由于count变量被effect、fn函数所共享,effect函数修改了count值后会对fn函数产生影响,即effect函数的执行对fn函数产生了副作用。

响应式数据: 当数据发生变化时会触发相关副作用函数自动执行,我们将这样的数据称为响应式数据。比如下面的例子,一开始obj.title的值为 首页,而后修改obj.title的值为详情页,当修改了obj.title的值之后若effect函数自动执行,则称obj为响应式数据。

const obj = { title: '首页' }
function effect() {document.body.innerText = obj.title
}
obj.title = '详情页'

二、响应式数据的简单实现

首先我们要清楚对象操作的基本语意:

  1. 读取” 操作又称之为 get
  2. 设置” 操作又称之为 set
    我们可以通过Proxy代理目标对象的读取设置操作,读取和设置操作的语意比较宽泛,在这里只介绍比较简单的getset,我们来看下面这个例子:
// 桶,用于存储代理对象和副作用函数之间的对应关系
const bucket = new Set()
// 用于存储临时的副作用函数
const activateEffect = nullconst data = {num: 1
}function effect(fn) {activateEffect = fnfn()
}
function track() {if (!activateEffect) {return}bucket.add(activateEffect)
}function trigger() {bucket.forEach(fn => fn())
}
const proxy = new Proxy(data, {get(target, key, receiver) {track()return Reflect.get(target, key, receiver)},set(target, key, value, receiver) {triggerreturn Reflect.set(target, key, value, receiver)}
})effect(() => console.log(proxy.num))
proxy.num++

上述例子中实现了一个简单的响应式功能,当读取proxy代理对象的属性时,代理对象中的get方法会收集副作用函数,当设置proxy对象的属性时set方法中的trigger函数会触发副作用函数的执行。但例子中的响应式系统还存在缺陷,作者还会不断完善。

http://www.dtcms.com/wzjs/794324.html

相关文章:

  • 台前做网站的公司廊坊seo整站优化软件
  • 烟台广告公司网站建设短信推广
  • 安徽省建设协会网站无忧网站建设哪家好
  • 要做一个网站需要准备什么百度点击优化
  • 做卖车网站需要什么手续涪城网站建设
  • 北城旺角做网站的月付商城网站建站
  • 网站关键词指数查询工具山东网站备案公司
  • 建设银行手机版官方网站投资公司注册
  • 蚌埠市建设学校网站网站流量查询站长之家
  • 济南手机建站哪家好定期做图书推荐的网站
  • 有没有专门发布毕业设计代做网站河北省廊坊市建设银行网站
  • idc网站是用什么语言做的天津seo管理平台
  • 网站代码优化调整照片网站cms
  • 成立一个网站需要多少钱东莞企业推广网络营销
  • 外贸免费自助建站平台wordpress置顶 显示
  • 专业网站建设平台代理商塘沽有哪些互联网公司
  • 二级院系网站建设情况3d视频制作公司
  • 什么最便宜网站建设wordpress判断首页选择不同模板
  • 企业网站开发使用方法重庆网站网页设计培训机构
  • 宁夏住房和建设厅官方网站如何自己做网站卖东西
  • 自己怎么做网站网页wordpress 菜单 文章列表
  • 商业网站开发教程在线制作带字图片
  • 在线绘画网站个人两字印章在线制作网站
  • 学校做网站浙江温州乐清新闻
  • 建站之星好不开锁行业在58做网站有活吗
  • asp.net开发微网站开发永久不收费免费的软件
  • 蚌埠网站制作公司排名福建省 园区网互联及网站建设 网络部分题目
  • 易时代网站学ui的网站
  • 江西企业网站建设公司重庆市建设工程安全管理网站
  • 收费网站空间中国建设银行宁波分行网站