深圳做h5网站的公司,wordpress重置密码,响应式网站文案,建设小企业网站步骤computed computed具体实现流程computer的执行顺序 computed
具体实现流程
computer内部首先是标准化参数然后调用runner函数进行依赖收集设置dirty为true创建副作用函数#xff0c;具体如下
const runner effect(getter,{//延迟执行lazy:true,//标记为computed effect 用… computed computed具体实现流程computer的执行顺序 computed
具体实现流程
computer内部首先是标准化参数然后调用runner函数进行依赖收集设置dirty为true创建副作用函数具体如下
const runner effect(getter,{//延迟执行lazy:true,//标记为computed effect 用于咋trigger阶段的优先级排序computed:true,//调度执行实现scheduler:() {//如果dirty为true则执行副作用函数if(dirty){//设置dirty为falsedirty falsetrigger(computed,set,value)}}
})创建computed对象具体如下
computed {_v_isRef:true,effect:runner,get value(){if(dirty){value runner()dirty false}track(computed,get,value)return value}set value(newValue){setter(newValue)}
}//最后
return computed 相关介绍 dirty默认是false当依赖发送变化是会设置dirty为true然后下一次执行get时会重新计算并设置dirty为false得到新的valuedirty为false为直接返回valuedirty为true时会重新计算value并设置dirty为false然后返回value 当computed被访问时会触发get computer的执行顺序
runner大于普通effect函数 例题 import {effect } from vue/reactivity
import {ref,computed} from vueconst count ref(0)
const plusOne computed(() count.value 1)effect(() {console.log(cont.valueplusOne.value)
})function increment() {count.value
}increment() 输出结果 : 1 3 3 主要原因时执行优先级不同输出1就不解释了。先执行pluseOne的runner将plusOne的runner的dirty设置为true然后通知他的依赖effect,这时由于plusOne的dirty为true所以会再次执行pluseOne的get拿到新值2再加上1就得到了3同时也会设置dirty为false然后再次执行count普通effect依赖 由于dirty为false再次输出3