示例代码块如下:
export default {
name: 'modal-button',
props:{
isShow:{
type:Boolean,
default:false
},
},
setup(props) {
// const modalOpen = ref(false);
const {isShow} = toRefs(props)
console.log('isShow',isShow.value)
const emit = defineEmits(['closeTeleport'])
console.log('emit',emit) // null
const closeTeleportButton = () => {
// modalOpen.vlaue = false;
console.log('子组件closeTeleport')
emit('closeTeleport',false)
}
return {
// modalOpen,
isShow,
closeTeleportButton
}
}
}
emit打印出来为null
解决办法,改为setup script代码块即可
<script setup lang="ts">
import {defineEmits, toRefs} from 'vue'
const props = defineProps({
isShow: {
type: Boolean,
default: false
},
})
const {isShow} = toRefs(props)
console.log('isShow', isShow)
const emit = defineEmits(['closeTeleport'])
console.log('emit', emit)
const closeTeleportButton = () => {
// modalOpen.vlaue = false;
console.log('子组件closeTeleport')
emit('closeTeleport', false)
}
</script>
文章讲述了在Vue3.x中使用`setup`脚本块时,如何正确处理props和emit的问题,以及为何在`setup`中使用`defineEmits`可以避免emit为null的情况。
889

被折叠的 条评论
为什么被折叠?



