Я ищу чистый способ использования v-model и vuex store.
Vuex предоставляет несколько вспомогательных методов, которые довольно полезны, но немного раздражают при использовании с v-model.
Сегодня я использую v-модель и мое модульное хранилище как
computed: {
type: {
get() {
return this.$store.state.mymodule.type;
},
set(newValue) {
this.$store.dispatch('mymodule/setType', newValue)
}
}
. Это работает, НО мне показалось, что лучше использовать выгоду от помощников vuex, чтобы избежать стандартного кода (это. $ Store, имя модуля,...)
Хорошо, поэтому я сначала хочу избавиться от имени модуля.Vuex предоставляет замечательные createNamespacedHelpers , которые возвращают модульные помощники.
Давайте использовать его:
import { createNamespacedHelpers } from 'vuex'
const { mapState, mapActions } = createNamespacedHelpers('some/nested/module')
Итак, теперь у нас есть чистые функции mapState и mapActions, которыевыделенный модуль.
computed: {
...mapState(['type']) // No need here to specify module name :)
}
Довольно круто, но поскольку у mapState есть только функция get, я не могу установить функцию отправки для обновления данных ...
В случае использования v-модели,Я нахожу помощников непригодными.Я не могу использовать mapState, поэтому я не могу использовать createNamespacedHelpers.
Итак: Как я могу использовать преимущества вспомогательных функций Vuex и v-модели для совместной работы?