Опыт 01 · Signals · Учебная заметка
Сигнал и производное значение
Меняем исходное состояние и наблюдаем, какие данные пересчитываются.
Записываем исходные данные
Сигнал можно прочитать вызовом функции. У изменяемого сигнала есть методы set и update. Например, список задач хранится в одном сигнале, а обработчик отметки создаёт следующую версию списка через update.
Производное — отдельное вычисление
Если на экране нужно показать только выполненные задачи, используйте computed. У выражения одна задача: прочитать текущий список и вернуть отфильтрованное значение. Не храните копию результата в другом изменяемом сигнале.
Проверьте, от чего зависит результат
Добавьте режим «Показывать все» и прочитайте соответствующий сигнал в computed. Теперь итог зависит и от списка, и от выбранного режима. Важно читать актуальные значения внутри вычисления, а не захватить результат заранее.
Пример для разбора
const tasks = signal([{ id: 1, title: "Разобрать пример", done: false }]);
const completed = computed(() => tasks().filter(task => task.done));
const markDone = (id: number) => tasks.update(items =>
items.map(task => task.id === id ? { ...task, done: true } : task)
);Добавьте отдельный сигнал фильтра и выведите количество видимых записей. После изменения фильтра список и счётчик должны остаться согласованными.
Первоисточник: официальная документация по теме ↗