Esor Hooks
State and Reactivity Hooks
signal(initialValue)
Fundamental hook for creating reactive states.
javascript
import { signal } from "esor";
// Basic use
const count = signal(0);
// Read value
console.log(count);
// Set new value
count(1);
// Update based on previous value
count(count() + 1); //correct
count((prev) => prev + 1); //wrong
WARNING
To update the signal you must pass the getter: jscount(count() + 1)
, or directly the value jscount(1)
, this will be displayed as a String: jscount((prev) => prev + 1);
unlike others.
computed(fn)
It creates a computed signal that is automatically updated when its dependencies change.
javascript
import { signal, computed } from "esor";
const count = signal(0);
const doubled = computed(() => count * 2);
// or just do:
const doubled = () => count * 2;
// `doubled` will be updated automatically when count is changed.
Effects Hooks
onEffect(fn)
Executes side effects that are synchronized with state changes.
javascript
import { onEffect } from "esor";
onEffect(() => {
// This code is executed when dependencies change.
// Optional: return cleaning function
return () => {
// Cleanup
};
});
Memorization Hooks
memo(fn, deps)
Memorizes a calculated value and only recalculates it when dependencies change.
javascript
import { memo } from "esor";
const memoizedValue = memo(() => computeExpensiveValue(dep), [dep]);
Reference Hooks
ref()
Creates a mutable reference that persists between renderings.
javascript
import { ref } from "esor";
const ref = ref();
// Access the current value
console.log(ref.current);
Event Hooks
emit(name, detail)
Hook to emit custom events.
javascript
import { emit } from "esor";
const event = emit("custom-event", {
data: "some data",
});
Utility Hooks
batch(fn)
Batches multiple status updates into a single update.
javascript
import { batch } from "esor";
batch(() => {
setCount(count + 1);
setName("John");
// It will only cause an update
});