vue3setup函数怎么用setup有哪些参数分别是干什么的,vue3如何使用emit。
1、如果使用了setup函数那么它讲会有两个参数分别是 props 和 context2、props是响应式的,当传入新的 props 时,它将被更新。但是,因为props是响应式的,你不能使用 ES6 解构,它会消除 prop 的响应性。export default {props: {item: String},setup(props,context) { //setup(props,{ emi
·
1、如果使用了setup函数那么它讲会有两个参数分别是 props 和 context
2、props
是响应式的,当传入新的 props 时,它将被更新。但是,因为 props
是响应式的,你不能使用 ES6 解构,它会消除 prop 的响应性。
export default {
props: {
item: String
},
setup(props,context) { // setup(props,{ emit } ) 解构赋值
console.log(props.item) // 这个可以访问到props里面的值
console.log(context.emit) // 这个可拿到emit方法
}
}
3、 如果需要解构 prop,可以在 setup
函数中使用 toRefs 函数来完成此操作
import { toRefs } from 'vue'
setup(props) {
const { obj } = toRefs(props)
console.log(obj.value)
}
4、如果 obj
是可选则的 prop,则传入的 props
中可能没有 obj
。在这种情况下,toRefs
将不会为 obj
创建一个 ref 。你需要使用 toRef
替代它:
import { toRef } from 'vue'
setup(props) {
const obj= toRef(props, 'obj')
console.log(obj.value)
}
二、 setup第二参数是 Context
1、传递给 setup
函数的第二个参数是 context
。context
是一个普通 Js 对象,暴露了其它可能在 setup
中有用的值
export default {
setup(props, context) {
// Attribute 属性 非响应式对象,等同于 $attrs
console.log(context.attrs)
// 插槽 非响应式对象,等同于 $slots
console.log(context.slots)
// 触发事件 方法,等同于 $emit
console.log(context.emit)
// 暴露公共 property 函数
console.log(context.expose)
}
}
2、context
是一个普通的 JavaScript 对象,也就是说,它不是响应式的,这意味着你可以安全地对 context
使用 ES6 解构。
export default {
setup(props, { attrs, slots, emit, expose }) {
...
}
}
更多推荐
已为社区贡献9条内容
所有评论(0)