#svelte #svelte-store
#стройный #хранилище на основе svelte
Вопрос:
йоу!
я пытаюсь обновить свое производное хранилище, я делаю следующее
// store.js line: 20
const updateProductOrder = newOrder => {
update(builderStore => {
console.log(builderStore) //undefined
})
}
функция запускается при перетаскивании карточки товара в строке 35 товаров.svelte
отлично работает во всех других функциях, которые выполняются в основном компоненте с использованием той же логики, по какой-то причине он не работает во вложенном компоненте, как в примере:
https://svelte.dev/repl/5287e7b0ba994772ae736fcc41952b08?version=3
не могли бы вы помочь, почему это не работает?
Комментарии:
1. Не могли бы вы обновить заголовок вопросов, пожалуйста! Никому не поможет увидеть этот заголовок в результатах поиска.
Ответ №1:
Функция обновления хранилища должна возвращать новое значение. То, что вы хотите, вероятно,
const updateProductOrder = newOrder => {
update(builderStore => {
console.log(builderStore)
return newOrder
})
}
В документах svelte для хранилища с возможностью записи контракт на обновление отображается примерно так.
store.update((oldValue) => { return newValue })
В вашем примере вам не хватает оператора return, поэтому в конечном итоге вы возвращаетесь undefined
и, таким образом, устанавливаете новое значение для вашего хранилища undefined
.
Вот обновленный repl с добавлением только этого изменения. Вы также можете посмотреть в руководстве небольшой пример на Incrementer.svelte
вкладке.