Vue3的Composition API 之 Setup函数

39 阅读1分钟
<!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>