【发布时间】:2020-11-04 07:22:23
【问题描述】:
我想为我的问题准备最小的可重现沙盒。我分叉了我以前的沙箱并删除了与新案例无关的代码。但是一个功能停止工作,我不知道为什么。代码看起来相同,console.log 显示代码已更新。为什么它在一个沙箱中有效,而在第二个沙箱中无效?
原始沙盒:https://codesandbox.io/s/frosty-taussig-v8u4b 尝试点击一些带有数字的按钮,它会立即增加。
最小化沙盒:https://codesandbox.io/s/nervous-breeze-ejznz。如果您单击带有数字的按钮,则在重新加载屏幕之前不会发生任何事情。
我想了解这种行为。我看不出相同源代码行为不同的原因。
变异:
SET_VOTE: (state, payload) => {
console.log("SET_VOTE");
const { commentId, vote } = payload;
const comment = state.comments[commentId];
if (vote === 1) {
comment.up += 1;
} else {
comment.down += 1;
}
console.log(comment);
}
行动:
COMMENT_VOTE: async (context, payload) => {
console.log("COMMENT_VOTE", payload);
const mutation = {
commentId: payload.commentId,
vote: payload.vote
};
context.commit("SET_VOTE", mutation);
}
评论.vue
<b-button v-on:click="upvote" class="mr-1">
{{ comment.up }}
</b-button>
async upvote() {
await this.$store.dispatch("COMMENT_VOTE", {
vote: 1,
commentId: this.comment._id
});
},
【问题讨论】:
标签: javascript vue.js vuex