signal Effects uses

Anjali Gurjar - Feb 3 - - Dev Community

let _effectFn = null;
function signal(val) {
const effectFns = [];
return {
get value() {
effectFns.push(_effectFn);
return val;
},
set value(_val) {
val = _val;
for (const effectFn of effectFns) {
effectFn();
}
}
}
}

function effect(effectFn) {
_effectFn = effectFn;
effectFn();
_effectFn = null;
}

function computed(compFn) {
const newSignal = signal();
effect(() => {
const val = compFn();
newSignal.value = val;
})
return newSignal;
}

const data = signal(0);

const computedData = computed(() => data.value * 2);

effect(() => {
console.log('Effect Fn: ', computedData.value);
});

data.value = 89;

data.value = 79;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .