2 回答
TA贡献1934条经验 获得超2个赞
在新的 Composition API 下,您之前定义的所有变量都data()只是setup()作为具有反应值的普通变量从您的函数返回。例如,具有如下数据功能的 Vue 2.0 组件:
data() {
return {
foo: 1,
bar: { name: "hi" }
}
}
setup()在 Vue 3 中变成这个函数:
setup() {
const foo = ref(1);
const bar = reactive({ name: "hi" });
return { foo, bar }
}
帮助ref程序包装一个非对象值以进行反应,并reactive包装一个对象。这比旧方法更清楚地揭示了 Vue 的基本原理,在旧方法中,包装在幕后“神奇地”发生,但在其他方面表现相同。我个人喜欢它的一点是,你的setup()函数可以在移动中构建你的对象,同时将相关的东西放在一起,让它讲述一个有凝聚力的故事,而不需要跳到不同的部分。
TA贡献2080条经验 获得超4个赞
composition 是 Vue 3 自带的新功能,作为 Vue 2 的插件,它不会取代旧的选项 api,但它们可以在同一个组件中一起使用。
组合 api 与选项 api 相比:
将逻辑功能收集到可重用的逻辑片段中。
使用一个选项,在创建组件之前执行的
setup
函数 ,一旦道具被解析,并作为组合 API 的入口点。将旧数据选项定义为
ref
或reactive
属性计算和监视定义为:
watch(...,()=>{...})
或computed(()=>{...})
定义为纯 JavaScript 函数的方法。
setup
使用的选项而不是创建的钩子,它具有作为参数的props
和context
钩子
mounted
可以用作onMounted(()=>{...})
,learn more
使用语法,您可以使用,和 ...script setup
声明您的反应数据ref
reactive
computed
<script setup >
import { ref, reactive, computed } from 'vue'
const isActive = ref(false)
const user = reactive({ firstName: 'John', lastName: 'Doe', age: 25 })
const fullName = computed(() => user.firstName + ' ' + user.lastName)
</script>
添加回答
举报