Хранилище на основе Svelte

#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 вкладке.