Vue自定義組件中使用Element-UI Dialog組件,點擊關閉報錯 [Vue warn] Avoid mutating a prop directly

Vue自定義組件中使用Element-UI Dialog組件,點擊關閉報錯 [Vue warn] Avoid mutating a prop directly

這是由於自定義組件使用了傳入的prop作爲 Dialog 的visible綁定值,導致Dialog關閉直接修改了prop而被vue警告,並且操作失效

解決方法也很簡單

組件引用是傳入屬性使用 .sync 修飾符

<comp :visible.sync='visible'></comp>

組件內的 Dialog 使用 before-close 劫持,然後 調用 $emit(‘update:visible’, false),關閉Dialog就可以了

<template>
    <div>
        <el-dialog title='xx' :visible.sync='visible' :before-close='beforeClose'>
        </el-dialog>
    </div>
</template>
<script>
    export default {
        props: {
            visible: Boolean,
        },
        methods: {
            beforeClose () {
                this.$emit('update:visible', false);
            },
        }
    };
</script>

這樣操作就是在父組件修改 visible的值,就不會引發vue的報錯了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章