vue.js - 如何绑定(bind)输入字段并同时更新 vuex 状态

标签 vue.js vuejs2 vuex

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

简化:

Vuex 状态

name: "Foo bar"

Vuex Action

addName

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

<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

并设置v-model到计算属性 name在你的<input>标签:

<input v-model="name" />

这是工作 jsfiddle

关于vue.js - 如何绑定(bind)输入字段并同时更新 vuex 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44456528/

相关文章:

node.js - 使用脚本 src 链接安装 Vuel.js 有哪些缺点?

javascript - Cypress :根据另一个子元素获取父元素的子元素

javascript - 我可以在 Vuex 的 settimeout 函数中更改并提交状态吗?

javascript - 如何使用 JSFiddle 在浏览器中计算所有具有很大最大值的素数

typescript - 我们如何在 vuex-module-decorators + Nuxt TypeScript 中访问商店模块文件中的 Vuex 商店实例?

javascript - v-on :click and event triggering on inner elements

javascript - 由于 HTML 内容限制,标签 <slot> 不能出现在 <table> 内。它将被浏览器从 <table> 中提升出来

vue.js - 在长时间 api 调用完成之前更改路由会覆盖 vuex 存储

javascript - Vuex和mysql连接对象: Do not mutate vuex store state outside mutation handlers

Typescript 无法从 Typescript 装饰器访问属性类型。 (目标是: {})