在vue3的setup script中,有什么办法手动指定暴露给template的属性?
如果是用setup方法,可以用return对象的方式,把这个对象的属性暴露给template
<script lang="ts">import HelloWorld from './components/HelloWorld.vue'
import { reactive } from 'vue';
export default {
components: { HelloWorld },
setup() {
const self = reactive({
msg: "You did it!"
})
return self
}
}
</script>
<template>
<header>
<div class="wrapper">
<HelloWorld :msg="msg" />
</div>
</header>
</template>
但是用了setup script,默认就是自动将所有临时变量作为属性暴露给template
<script lang="ts" setup>import HelloWorld from './components/HelloWorld.vue'
import { reactive } from 'vue';
const self = reactive({
msg: "You did it!"
})
// 怎么操作self才能把self的msg属性暴露给template?
</script>
<template>
<header>
<div class="wrapper">
<!-- 只能指定self这个属性 -->
<HelloWorld :msg="self.msg" />
</div>
</header>
</template>
如果在setup script中都用临时变量呢,所有属性都要ref
,然后在script中使用的时候msg.value
。看起来和用起来都非常的难受。而用export options的方式呢,又要重复写一次子组件,也非常难受。
就没有同时拥有两者优点的方式吗?
回答:
可以通过解构把msg直接暴露给模版
const {msg}=toRefs(self)
要注意的时,必须通过toRefs,不然直接解构,msg会失去响应性
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回答:
如果在setup script中都用临时变量呢,所有属性都要ref
你不加 ref 也是好使的。除非你给我一个场景。
对了,你不想有特别多的变量,还可以自己搞个闭包。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
以上是 在vue3的setup script中,有什么办法手动指定暴露给template的属性? 的全部内容, 来源链接: utcz.com/p/933934.html