大飞_dafei

导航

Vue3 在 Element-plus中 v-model, update:modelValue 线上环境报错

Vue3 在 Element-plus中 v-model, update:modelValue 线上环境报错 modelValue is not defined,在本地开发环境没有问题

01)错误场景复现

<template>
  <!-- 父组件-->
  <div class="fei-parent">
    <p>
      <button @click="visible=true"> 打开弹窗 </button>
    </p>

    <p>
      <Bar v-model="visible"/>
    </p>

  </div>
</template>

<script setup>
  import {ref} from "vue";
  import Bar from './bar.vue'
  const visible = ref(false);
</script>
------------------------------------------------------
<template>
  <el-dialog title="新增-修改" :width="560" v-model="modelValue" :before-close="onClose">
    <div>
      aaaaaaaaaaa__报错了
    </div>
  </el-dialog>

</template>

<script setup>
const props = defineProps({
  modelValue: {
    type: Boolean,
    default: false
  }
})

const emits = defineEmits(['update:modelValue'])

const onClose = () => {
  emits('update:modelValue', false)
}

</script>

 

 

02)解决方案01:

在父组件上使用 v-if

<Bar v-if="visible" v-model="visible"/>

03)解决方案02:

在子组件中使用computed,重新定义值

<template>
  <el-dialog title="新增-修改" :width="560" v-model="editVisible" :before-close="onClose">
    <div>
      aaaaaaaaaaa__ok_大飞
    </div>
  </el-dialog>
</template>

<script setup>
import {computed} from "vue";

const props = defineProps({
  modelValue: {
    type: Boolean,
    default: false
  }
})

const emits = defineEmits(['update:modelValue'])

const editVisible = computed({ // 重新定义
  get: () => props.modelValue,
  set: (value) => emits("update:modelValue", value),
})

const onClose = () => {
  emits('update:modelValue', false)
}

</script>

 

posted on 2022-08-10 15:55  大飞_dafei  阅读(3097)  评论(0编辑  收藏  举报