vue3 computed set无法触发问题

computed.set为什么无法执行?

完整代码如下:

<!doctype html>
<html lang="en">
<head>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.0.7/vue.global.prod.js"></script>
    <title>Document</title>
</head>
<body>
<div id="app">
    <template v-for="v in newList">
        <div><input type="text" v-model="v.val"></div>
    </template>
</div>
<script>
    const data = {
        data() {
            return {
                list:  [{val:'A1'}, {val:'B1'}, {val:'C1'}]
            }
        },
        computed: {
            newList: {
                get(){
                    return [{val:'A'}, {val:'B'}, {val:'C'}];
                },
                set(v){
                   console.log(v);
                   this.list[0].val='ddd';
                }
            }
        }
    };
    Vue.createApp(data).mount('#app');
</script>
</body>
</html>
阅读 7.2k
1 个回答

问题出在这行 this.list[0].val='ddd';

这一行是无法被 vue 所监听到的,需要使用 this.$set 函数来设置,具体参考 Vue.set 函数的使用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题