Вы должны поместить весь код изменения состояния Vuex в само хранилище Vuex через mutation
или action
. Мутации предназначены для синхронных изменений данных, которые обновят все реактивные компоненты. Действия предназначены для асинхронных событий, таких как сохранение изменений состояния на сервере.
Итак, когда происходит изменение, он должен вызвать метод вашего компонента, который, в свою очередь, должен вызвать соответствующую мутацию или действие в хранилище Vuex.
Вы не даете свой полный код, но вот гипотетический пример:
( Отредактировано с учетом вопроса о доступе к данным из метода мутации. )
Шаблон:
<input type="text" name="position" :value="article.position" @input="updatePosition">
Метод по компоненту:
methods: {
updatePosition(e) {
this.$store.commit('changeArticleOrder', article.position, e.target.value)
}
}
Мутация в магазине Vuex:
mutations: {
changeArticleOrder(state, oldPosition, newPosition) {
for (var i = 0; i < 10; i++) {
state.articles[i].position = i + 1;
/* Or do whatever it is you want to do with your positioning. */
}
}