上海网站建设 网站制作,如何使用jq做弹幕网站,中国flash网站模板,好用的网站链接defineOptions
问题#xff1a;用了script setup后#xff0c;就无法添加与其平级的属性了#xff0c;比如定义组件的name或其他自定义的属性。
为了解决这一问题#xff0c;引入了defineProps与defineEmits这两个宏#xff0c;但这只解决了props与emits这两个属…defineOptions
问题用了script setup后就无法添加与其平级的属性了比如定义组件的name或其他自定义的属性。
为了解决这一问题引入了defineProps与defineEmits这两个宏但这只解决了props与emits这两个属性。如果要定义其他的平级属性还是得回到最原始的用法--就再添加一个普通的script标签。这样就会存在两个script标签让人无法接受。
所以在Vue3.3中新引入了defineOptions宏。顾名思义主要是用来定义Option API的选项。可以用defineOptions定义任意的选项props、emits、expose、slots除外因为这些可以使用defineXXX来做到
script setup
import { defineOptions } from vue
defineOptions({name: Foo,//组件重命名inheritAttrs: false,//...更多自定义属性
})
/scriptdefineModel
试验型快速实现双向绑定简化v-model
在Vue3中自定义组件上使用v-model相当于传递一个modelValue属性同时触发update:modelValue事件
Child v-modelisVisible
//相当于
Child :modelValueisVisible update:modelValueisVisible$event
我们需要先定义props再定义emits。其中有许多重复的代码。如果需要修改此值还需要手动调动emit函数
父组件
templateinputModel v-modeltxt/inputModel{{ txt }}
/templatescript setup
import inputModel from /components/inputModel.vue
import { ref } from vue
const txt ref(100)
/script
子组件
script setup
import { defineProps, defineEmits } from vue
defineProps({modelValue: String
})
const emit defineEmits([update:modelValue])
/script
templatedivinput typetext :valuemodelValue inpute emit(update:modelValue, e.target.value)/div
/template
style scoped
input {width: 14rem;height: 2rem;
}
/style
使用defineModel改进后的子组件