Size: a a a

2020 March 26

DD

Dmitry Dead in Svelte [svelt]
щас, я вот думаю, может я мыслю старо, по реактовски как-то
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Dmitry Dead
get только один раз же получает, мне нужна подписка
Именно так и ничего кроме коллбека человечество еще не придумало для этих целей
источник

DD

Dmitry Dead in Svelte [svelt]
меня просто мутирование смущает
источник

DD

Dmitry Dead in Svelte [svelt]
что я должен создать переменную, подписку и в этой подписке менять переменную ;(
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
Dmitry Dead
get только один раз же получает, мне нужна подписка
ну если в компоненте нужна подписка - то обращение через доллар как раз для этого
а если вне...
ну вот например, у меня ща проект с nuxt (vue) мигрирует на свелт (и когда выкину nuxt, планирую саппер)
и у меня vue компоненты со сторами работают через простую обертку:
import Vue from 'vue';
import {noop} from 'svelte/internal';
import {Readable, Writable} from 'svelte/store';
import {callAll} from '@/lib/functions'; // оборачивает много функций с идентичной сигнатурой в 1 общую
const BEFORE_DESTROY_HOOK_EVENT_NAME = 'hook:beforeDestroy';
export function connectStoreToField<T, Field extends string>(
   vm: Vue & Record<Field, T>,
   field: Field,
   store: Readable<T>,
   setter?: Writable<T>['set']
) {
   return vm.$once(BEFORE_DESTROY_HOOK_EVENT_NAME, callAll([
       store.subscribe(v => Vue.set(vm, field, v)),
       setter ? vm.$watch(() => vm[field], setter) : noop
   ]));
}
источник

A

Arushwl in Svelte [svelt]
noop - это кто?
источник

DD

Dmitry Dead in Svelte [svelt]
() => {}
источник

DD

Dmitry Dead in Svelte [svelt]
это вот такая функция
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
Arushwl
noop - это кто?
no operations
пустая функция
источник

A

Arushwl in Svelte [svelt]
А зачем?
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Dmitry Dead
что я должен создать переменную, подписку и в этой подписке менять переменную ;(
В подписке ты ничего не меняешь
источник

DD

Dmitry Dead in Svelte [svelt]
ну переменную что выше лежит
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
Arushwl
А зачем?
чтоб отдать ее куда то, что принципиально хочет функцию, но ты не хочешь ничего туда отдавать
источник

A

Arushwl in Svelte [svelt]
Для определения типа?
источник

T

Th0r in Svelte [svelt]
Dmitry Dead
ну переменную что выше лежит
а как организовать подписку по другому?
источник

T

Th0r in Svelte [svelt]
Arushwl
Для определения типа?
array.forEach() - ошибка, требует функцию
array.forEach(noop) - нет ошибки
источник

A

Arushwl in Svelte [svelt]
А
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
Arushwl
Для определения типа?
смотри, в моем примере сеттер опциональный
и я делаю так:
setter ? vm.$watch(() => vm[field], setter) : noop
если отдали сетер, то я вотчу филд во вью, и отдаю unwatch в дестрой хук, а если сетера нет, то просто отдаю туда noop  и не парюсь со сложным императивным кодом
источник

DD

Dmitry Dead in Svelte [svelt]
Th0r
а как организовать подписку по другому?
в реакте я коннект делаю к компоненту и подписка скрыта, здесь она торчит наружу и я вынужден постоянно за ней следить и могу просто забыть отписаться от чего-то и создать memory leak
источник

DD

Dmitry Dead in Svelte [svelt]
также растет кол-во кода в компоненте, я пока пытаюсь понять как мне все отсортировать, чтобы один и тот же стиль был везде
источник