доповідь, в якій ви дізнаєтесь про концепцію signals, їх переваги й недоліки, а також на власні очі побачите справжню реакт-абізяну
const a = signal(0);
const b = computed(() => a() + 1);
function Counter() {
const [count, setCount] = createSignal(0);
return (
<button onClick={() => setCount(count() + 1)}>
Клікнуто {count()} разів
</button>
);
}
@Component({
selector: 'app-counter',
template: `
<button (click)="count.set(count() + 1)">
Count: {{ count() }}
</button>
`
})
export class CounterComponent {
count = signal(0);
}
<script>
import { state, derived, effect } from 'svelte/runes';
const count = state(0);
const doubled = derived(() => count.value * 2);
effect(() => console.log(`Count: ${count.value}`));
</script>
<button on:click={() => count.value++}>
Count: {count.value}
</button>
<p>Doubled: {doubled.value}</p>
const Atomic = ({atom}) => <>{useAtom(atom)}</>;
const Component = () => <>
<h2>User name</h2>
<p><Atomic atom={user.name} /></p>
<h2>User title</h2>
<p><Atomic atom={user.title} /></p>
</>;
Сигнали вводять атомарну реактивність, замість компонентних ререндерів
Fine-grained оновлення мінімізує навантаження на CPU та DOM
Сигнали вже в Solid, Angular, Svelte, Preact і на шляху в стандарт JS