如何在 vuex 中使用 <select> v-model?

How to use <select> v-model with vuex?

我的模板中有一个 <select>

<select v-model="amount" required>
  <option value="10">10</option>
  <option value="20">20</option>
  <option value="25">25</option>
  <option value="30">30</option>
</select>
data () {
  return {
    amount: '',
  }
}

我能以某种方式将 amount 置于 vuex 状态吗?

是的,你可以。首先,设置您的 Vuex 存储以保存值和突变:

商店

state: {
  amount: null
},
mutations: {
  SET_AMOUNT(state, payload) {
    state.amount = payload;
  }
}

您需要一种在模型更改时调用突变并在状态更改时更新模型的方法。 computed setter 是一个优雅的工具,可以处理两个方向并避免不正确地改变组件中的 Vuex 状态:

在组件中创建一个computed

组件

computed: {
  amount: {
    get() { return this.$store.state.amount },
    set(value) { this.$store.commit('SET_AMOUNT', value) }
  }
}

这将按照您的 post 中的方式使用模板。