DEV Community

Anjali Gurjar
Anjali Gurjar

Posted on

signal Effects uses

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;

Top comments (0)