17681880207
V2EX  ›  问与答

Vue3 双向绑定报错

  •  
  •   17681880207 · Nov 29, 2021 · 1272 views
    This topic created in 1651 days ago, the information mentioned may be changed or developed.

    用到的组件:el-drawer

    父组件:

    <template>
      <div>
        <el-button
            type="primary"
            @click="openDetailsDrawer">
          View Details
        </el-button>
        <p>{{ myDrawer.visible }}</p>
    
        <details-drawer
            v-model:visible="myDrawer.visible"
            :payload="myDrawer.payload"/>
      </div>
    </template>
    
    <script lang="ts" setup>
    import {reactive, nextTick, ref} from 'vue'
    import DetailsDrawer from './components/DetailsDrawer/index.vue'
    
    const myDrawer = reactive({
      visible: false,
      payload: {
        title: '',
        content: ''
      }
    })
    
    const openDetailsDrawer = () => {
      myDrawer.visible = true
      nextTick(() => {
        myDrawer.payload.title = '标题' + new Date().getTime()
        myDrawer.payload.content = '内容' + new Date().getTime()
      })
    }
    </script>
    

    子组件:

    <template>
      <el-drawer
          v-model="visible"
          :title="payload.title"
          :before-close="updateVisible">
        <template #default>
          {{ payload.content }}
          <el-button @click="handleClose">Close</el-button>
        </template>
      </el-drawer>
    </template>
    
    <script lang="ts" setup>
    import {defineProps, defineEmits} from 'vue'
    
    const props = defineProps({
      visible: {
        type: Boolean,
        default: false
      },
      payload: {
        type: Object,
        default: () => {
          return {}
        }
      }
    })
    
    const emits = defineEmits<{
      (e: 'update:visible', visible: boolean): void
    }>()
    
    const updateVisible = () => {
      emits('update:visible', false)
    }
    </script>
    
    

    问题
    不论我在子组件<el-drawser/>

    1. :before-close ;
    2. @closed ;
    3. @close ;

    任何一个方法调用 updateVisible 方法,都会报如下错误:

    ReferenceError: visible is not defined
    
    1 replies    2021-11-30 16:20:12 +08:00
    oyadubanana
        1
    oyadubanana  
       Nov 30, 2021
    解决了吗?
    另外就是,defineProps 和 defineEmits 不需要引入。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3029 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 00:19 · PVG 08:19 · LAX 17:19 · JFK 20:19
    ♥ Do have faith in what you're doing.