如何绑定输入字段并同时更新 vuex 状态

How to bind input field and update vuex state at same time

我来自 React 背景,从 prop 设置你的状态就足够了,你可以调用 setState({...}) 来更新状态,所以,对于 vue / vuex,我觉得很难。

简化:

Vuex 状态

name: "Foo bar"

Vuex 动作

addName

我可以毫无问题地更改状态,但我需要绑定一个输入字段,并且在更改时更新状态。将此视为更新表单,其中已预先填写用户详细信息并且他们可以更改姓名。

<input @change="addName(newName) v-model="newName" />

我可以添加一个 watch 来监视 newName 并更新状态,但是,我需要用状态预填充输入。哈!我可以使用 beforeMount() 但我的状态尚未加载。

computed: {
  ...mapState([
  'name'
  ]),
},
beforeMount() {
  // this.newName = this.name
  console.log('Mounted') // Shows in console
  console.log(this.name) // nothing
}

名字显示在模板中<pre>{{ name }}</pre>

你可以使用 computed setter

computed:{
    name:{
        get: function(){ 
            return store.state.name; 
        }, 
        set: function(newName){ 
            store.dispatch('addName',newName); 
        }
    }
} 
enter code here

并在您的 <input> 标签中将 v-model 设置为计算得出的 属性 name :

<input v-model="name" />

这是工作jsfiddle