<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Composition API 之 Setup函数</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="root"></div>
</body>
<script>
// 对数据做校验的插件
const app = Vue.createApp({
template: `
<div @click="handleClick">{{name}}</div>
`,
methods: {
test() {
console.log(this.$options.setup());
}
},
mounted() {
this.test();
},
// created 实例被完全初始化之前
setup(props, context) {
// props表示外部组件传递过来的内容 context表示上下文
// 在setup里面不能使用this这样的关键词
// 在setup方法里面没办法调用外部模版或者生命周期函数,而在外部的实例方法或者生命周期函数里面可以直接调用setup方法
// setup执行的时候这个实例并没有被创建,并没有完成初始化,所以压根不存在this,所以这里面使用this是不行的,拿不到app的实例
// 但是在app实例创建好之后,setup已经被挂载在这个实例上了,所以当你有这个实例的时候,里面也能获取到这个setup方法
// 这是Composition API最核心的内容
return {
name: 'dell',
handleClick: () => {
alert(123)
}
}
}
});
const vm = app.mount('#root');
</script>
</html>