Size: a a a

2020 March 02

A

Arushwl in Svelte [svelt]
У меня вопрос про сторы вот - они хранят данные в текущей сессии?  Думаю можно ли обойтись без local/session Storage ?
источник

A

Arushwl in Svelte [svelt]
Например стейты в них хранить глобальные норм?
источник

A

Arushwl in Svelte [svelt]
Или это просто контракт на время выполнения соглашения?
источник

a

akaSybe in Svelte [svelt]
Arushwl
Например стейты в них хранить глобальные норм?
Так сторы для глобального состояния и созданы
источник

A

Arushwl in Svelte [svelt]
А после перезапуска приложения они обнуляются?
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
Arushwl
У меня вопрос про сторы вот - они хранят данные в текущей сессии?  Думаю можно ли обойтись без local/session Storage ?
если перезагрузка страницы будет - то нет, данные в сторах в памяти чисто лежат
а для глобального состояния самый раз
источник

a

akaSybe in Svelte [svelt]
Arushwl
А после перезапуска приложения они обнуляются?
Естественно, это же просто объекты в памяти
источник

A

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

A

Arushwl in Svelte [svelt]
Спасибо
источник

A

Arushwl in Svelte [svelt]
Теперь усвоил. Тогда запишу в сторадж. ;)
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
а вообще, я себе вот такую обертку накидал, чтоб со сторами работать как с редаксом:
import {Readable, readable, derived} from 'svelte/store';
import {noop} from 'svelte/internal';
import {isNotEmptyArray} from './arrays';

type CombinedStoreValues<SR extends Record<string, Readable<any>>> = {
   [K in keyof SR]: SR[K] extends Readable<infer T> ? T : never;
};

export function combineStores<SR extends Record<string, Readable<any>>>(storesRecord: SR): Readable<CombinedStoreValues<SR>> & SR {
   const names: Array<keyof SR> = Object.keys(storesRecord);
   const stores = names.map<Readable<SR[string]>>(name => storesRecord[name]);
   if(!isNotEmptyArray(stores)) {
       return Object.assign(
           readable({} as CombinedStoreValues<SR>, noop),
           storesRecord
       );
   }
   const reducer = (acc: Partial<CombinedStoreValues<SR>>, value: SR[string], i: number) => ({
       ...acc,
       [names[i]]: value
   });
   return Object.assign(
       derived(stores, (values) => values.reduce(reducer, {}) as CombinedStoreValues<SR>),
       storesRecord
   );
}
источник

A

Arushwl in Svelte [svelt]
Не знаком с редаксом совсем...
источник

A

Arushwl in Svelte [svelt]
Вижу методы работы с массивами
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
Arushwl
Не знаком с редаксом совсем...
там идея, что есть одно глобальное состояние, на изменение которого можно подписаться и легко выяснить для любой части, была ли она изменена
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
Arushwl
Не знаком с редаксом совсем...
я собственно эту идею и реализовал:
любой стор как минимум readable, несколько readable сторов можно объединить объектом и сделать на его основе новый readable, который будет уведомлять подписчиков схожим объектом со значениями всех дочерних сторов при изменении любого из них
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
ну и на основе этого можно строить структуру любой вложенности
источник

ДБ

Дмитрий Беляев in Svelte [svelt]
чтото вроде такого выходит:
const state = combineStores({
 store1: readable(1, set => {
   let i = 1;
   setInterval(() => set(++i), 1000);
 }),
 store2: writable(''),
 store3: combineStores({
   // тут вложенный уровень
 })
});
источник

A

Arushwl in Svelte [svelt]
Зависимыми состояниями управлять?
источник

A

Arushwl in Svelte [svelt]
А вы смотрели воркшоп с сапером @PaulMaly ?
источник

A

Arushwl in Svelte [svelt]
Там как-то прям элементарно зависимости сторов выстроены.
источник