【发布时间】:2021-03-04 11:44:51
【问题描述】:
我用 vue-cli 和 vuex 开始了一个笔记项目。我已经正确设置了所有内容,并且一切正常,除了当我在 vuex 存储中添加一个新注释 - 注释列表时,它会被添加,这很好,但是当我更改输入字段中的值时,我的 vuex 存储值也会在不提交任何内容的情况下更新。
这里是代码 -
<template>
<div>
{{title}}
<input type="text" v-model="note.msg">
<button v-on:click="addNote()">ADD</button>
</div>
</template>
<script>
module.exports = {
data() {
return {
title:'Add node',
note: {
msg: this.msg,
avatar:'wolf'
}
}
},
methods: {
addNote(){
this.$store.dispatch("updateNotes",this.note);
}
},
}
</script>
<style scoped>
</style>
当我在添加笔记后更改输入值时,它会在 vuex 商店以及我显示列表的其他组件中更新。
我尝试过的是 - 我没有将 note.msg 设为 v-model,而是将其更改为 msg 并且数据对象和计算属性已相应更新,它解决了我的问题 -
<template>
<div>
{{title}}
<input type="text" v-model="msg">
<button v-on:click="addNote()">ADD</button>
</div>
</template>
<script>
module.exports = {
data() {
return {
title:'Add node',
msg:''
}
},
methods: {
addNote(){
let note = {
msg: this.msg,
avatar:'wolf'
};
this.$store.dispatch("updateNotes",note);
}
},
}
</script>
<style scoped>
</style>
从技术上讲,我没有任何问题,只是我无法理解这一点。我没想到会发生这种情况。我预计第二种行为不是第一种。
编辑
action.js
const updateNotes = (context, payload) => {
context.commit('updateNotes', payload);
}
export default {
updateNotes,
};
mutation.js
const updateNotes = (state, data) => {
state.notes.push(data);
}
export default {
updateNotes
};
这些是我项目中的突变和操作。
【问题讨论】:
标签: javascript vue.js vuex