账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue.js组件设计,导致死循环
    • 2020-01-01 00:00
    • 11
    59
    0

    现在有一个复杂的页面,结构大概如下:

    data() {
        return {
            prop1: '',
            prop2: '',
            prop3: '',
            propTab: []
        }
    },

    现在 propTab 属性对应的ui逻辑比较固定,重复度高,所以提取为一个单独的组件,组件代码如下:

    props: {
        list: {
            type: Array,
            default: function() {
                return []
            }
        }
    },
    watch: {
        tabList: {
            handler (val) {
                this.$emit('changed', val)
            },
            deep: true
        },
    },
    mounted() {
        this.tabList = JSON.parse(JSON.stringify(this.list))
    },
    data() {
        return {
            tabList: []
        }
    },

    但是现在有如下问题:

    1、组件中需要监听 list 的改变,外部需要等到组件内部对象list的最新值;
    2、当外部属性(propTab)改变时,组件需要更新(如:详细页通过ajax获取到详细内容时);

    这样就导致死循环了,外部list改变,组件内部需要更新tabList,内部tabList更新了,需要emit通知外部,感觉是对组件的使用(组件的工作模式)有问题,这种组件该怎么设计呢?

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 共 0 条
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部