第 47 题:双向绑定和 vuex 是否冲突

发布于 2022-10-24 11:54:13 字数 478 浏览 111 评论 9

在严格模式下直接使用确实会有问题。解决方案:

<input v-model="message" />
computed: {
    message: {
        set (value) {
            this.$store.dispatch('updateMessage', value);
        },
        get () {
            return this.$store.state.obj.message
        }
    }
}
mutations: {
    UPDATE_MESSAGE (state, v) {
        state.obj.message = v;
    }
}
actions: {
    update_message ({ commit }, v) {
        commit('UPDATE_MESSAGE', v);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

一片旧的回忆 2022-05-04 13:56:52

我觉这个问题是vuex设计规范的问题.
理论上双向绑定和 vuex是可以的,如果可以双向绑定就会绕过mutation函数去改变store,但是vuex的设计规范上肯定是不允许绕过mutation函数去改变store的,vuex也确实做了这样的处理,所以官方给你了一个种类双向绑定的方案去做....

梦萦几度 2022-05-04 13:56:52

这种 setter 的方法测试了下,好像不支持对象,只支持简单的字段。例如 v-model="message.age",不知道有人碰到过没?

<input v-model="message.age" />

computed: {
    message: {
        set (value) {
            this.$store.dispatch('updateMessage', value);
        },
        get () {
            return this.$store.state.obj.message
        }
    }
}
不即不离 2022-05-04 13:56:50

个人认为:
该问题问的确实是 双向绑定和单向数据流的是否冲突
从名字上来看是冲突的
双向绑定是是 UI改变导致Model改变 Model的改变导致UI的render
单向数据流呢,是Model控制UI,而想改变数据请dispath...
但干的事情是一样的:
但我觉得立足点不一样,单向数据流是统一的state,目的是可追溯state的改变,最终绕这么大一圈还是在修改state,renderUI
而双向绑定更多的是组件内部

长不大的小祸害 2022-05-04 13:56:47

VueX规定了单向数据流,把把VueX的State放到v-model双向绑定报错,本来就是代码问题。和冲突么关系。而且VueX的双向绑定就是利用了new Vue实现的。为了单项数据流设置了Flag作为标记。不应该是VueX和双向绑定的冲突。是coder的问题。

秋风の叶未落 2022-05-04 13:55:35

@sisi529 不懂再严格模式中使用vuex这句话的意思

若有似无的小暗淡 2022-05-04 13:51:38

在严格模式中使用Vuex,当用户输入时,v-model会试图直接修改属性值,但这个修改不是在mutation中修改的,所以会抛出一个错误。当需要在组件中使用vuex中的state时,有2种解决方案:
1、在input中绑定value(vuex中的state),然后监听input的change或者input事件,在事件回调中调用mutation修改state的值
2、使用带有setter的双向绑定计算属性。见以下例子(来自官方文档):

<input v-model="message">
computed: { message: { get () { return this.$store.state.obj.message }, set (value) { this.$store.commit('updateMessage', value) } } }

黄昏下泛黄的笔记 2022-05-04 13:40:51

我怀疑我看的vuex文档跟别人看的不是同一个,今天又是流下没有技术的眼泪的一天

~没有更多了~

关于作者

桃扇骨

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

lioqio

文章 0 评论 0

Single

文章 0 评论 0

禾厶谷欠

文章 0 评论 0

alipaysp_2zg8elfGgC

文章 0 评论 0

qq_N6d4X7

文章 0 评论 0

放低过去

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文