Size: a a a

2020 October 20

МТ

Марк Танащук... in Svelte [svelt]
Это еще и специально он делал)
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Есть js файл с стором вида:

let obj = {
  prop1: "data",
 prop2: "data"
}

export const storeName = writable(obj)

И если я хочу изменять одно свойство стора каждые N времени , то я могу это сделать так:

export const storeName = writable(obj, () => {
 setInterval(() => {
   storeName.set({
     prop1: get(storeName).prop1,
     prop2: "New value"
   })
 },1_000)
})

Но правильно ли так делать?
readable для этого так то. Конкретно в этом примере хорошо бы ещё вернуть функцию и в ней отчистить интервал.
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
readable для этого так то. Конкретно в этом примере хорошо бы ещё вернуть функцию и в ней отчистить интервал.
Как должен выглядеть соответствующий readable?
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Точнее я понимаю что это не лучший способ, так как если свойств много, то всем им прописывать get(storeName).propName - времезатратно

Но

storeName.update(store => {
 store.prop2 = "New value";
 return store;
})


Не обновляет разметку в компонентах которые этот стор использует
Что значит update не обновляет? 🤔
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Как должен выглядеть соответствующий readable?
В доке есть пример же с интервалом
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
Что значит update не обновляет? 🤔
storeName.update(store => {
 store.prop2 = "New value";
 console.log(get(storeName))
 return store;
})

Выведет в консоль обновленный объект, но в условном App.svelte такого вида:

<script>
 import { store } from "./store.js"
</script>

{$store.prop2}


prop2 не изменится
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
В доке есть пример же с интервалом
Недоглядел >.>
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
В доке есть пример же с интервалом
https://svelte.dev/docs#readable

Тут указано, как изменять значение всего стора, а не его свойства
источник

МТ

Марк Танащук... in Svelte [svelt]
У меня также есть еще и вложенные объекты в объектах, так что я хотел бы иметь возможность сделать нечто по типу:

storeName.set(prop1.subProp1, "New value")
источник

МТ

Марк Танащук... in Svelte [svelt]
Марк Танащук
У меня также есть еще и вложенные объекты в объектах, так что я хотел бы иметь возможность сделать нечто по типу:

storeName.set(prop1.subProp1, "New value")
Грубый синтаксис, но смысл думаю ясен
источник

JA

Jenka Artiukh in Svelte [svelt]
А если написать функцию в сторе что-то вроде этого:
setVariable: (variable, value) => {
store.update(storeValues => {
return ({...storeValues, variable: value});
});
}
источник

МТ

Марк Танащук... in Svelte [svelt]
Jenka Artiukh
А если написать функцию в сторе что-то вроде этого:
setVariable: (variable, value) => {
store.update(storeValues => {
return ({...storeValues, variable: value});
});
}
Собственно разметка не изменяется ж

https://t.me/sveltejs/115687
источник

МТ

Марк Танащук... in Svelte [svelt]
Секунду - попробую
источник

JA

Jenka Artiukh in Svelte [svelt]
Очень странно что у тебя не изменяет
источник

JA

Jenka Artiukh in Svelte [svelt]
Я использовал у себя такое и работало) мб просто у тебя другая ситуация
источник

МТ

Марк Танащук... in Svelte [svelt]
Jenka Artiukh
Очень странно что у тебя не изменяет
У меня это делается в setInterval
источник

МТ

Марк Танащук... in Svelte [svelt]
Если вне него то работает
источник

JA

Jenka Artiukh in Svelte [svelt]
Аааа
источник

JA

Jenka Artiukh in Svelte [svelt]
Тогда походу не заработает мой вариант
источник

МТ

Марк Танащук... in Svelte [svelt]
источник