vue3中的setup

简介: vue3中的setup

前言

setup是vue3中的一个全新的配置项,值为一个函数;

setup是所有**CompositionAPI(组合API)**的基础,组件中所用到的数据、方法等都需要在setup中进行配置

setup中的两种返回值

  • 返回一个对象,对象中的属性、方法,在模板中均可直接使用
<template>
  <div>{{ sayHello() }}</div>
  <div>{{ name }}</div>
</template>
<script>
export default {
  name: "App",
  setup() {
    // 数据
    let name = "张三";
    let age = "18";
    // 方法
    function sayHello() {
      alert(`我叫${name},我${age}岁了,你好啊`);
    }
    // 第一种return,返回一个对象
    return {
      name,
      age,
      sayHello,
    };
  },
};
</script>
  • 在vue2的配置中可读取到vue3配置中的属性和方法;在vue3的配置中不能读取vue2配置中的属性和方法
<template>
  <div>{{ name }}</div>
  <!-- <div>{{ sayHello() }}</div> -->
  <div>{{ test2() }}</div>
</template>
<script>
export default {
  name: "App",
  data() {
    return {
      sex: "男",
    };
  },
  methods:{
    sayHello() {
    alert('你好啊')
  }
  },
  setup() {
    // 数据
    let name = "张三";
    let age = "18";
    function test2() {
    console.log(this.sex,'sex');
    console.log(this.sayHello,'sayHello');
  }
    // 第一种return,返回一个对象
    return {
      name,
      age,
      test2
    };
  },
};
</script>
  • 如果vue2和vue3的配置有冲突,则vue3的setup优先
data() {
  return {
    sex:'男'
  }
},
setup() {
  const sex = ref('女')
  return {
    sex
  }
}

setup执行的时机

在beforeCreate之前执行一次,this是undefined

beforeCreate(){
  console.log('beforeCreate');
},
setup(){
  console.log('setup',this);
}

setup的参数

第1个参数:props是一个对象,包含父组件传递给子组件的所有数据;在子组件中使用props进行接收。

第2个参数:context,是一个对象。该属性是props中没有声明接收的所有的对象;如果你使用props去获取值,同时props中你声明了你要获取的值

则:获取的值是undefined

//父组件
<template>
  <Child msg="你好啊" aa="111"></Child>
</template>
<script>
import { ref } from "vue";
import Child from "./Child.vue";
export default {
  components: { Child },
  name: "App",
  setup() {
    return {
    };
  }
};
</script>
//子组件
<template>
  <div>{{ msg }}</div>
</template>    
<script>
export default {
    props:['msg'], // 需要声明一下接受到了,否则会报警告
    setup(props,context){
        console.log(props,context,'父传子接收到了');
    }
}
</script>

注意点:

①、vue3支持向下兼容,vue2中的data、methods配置项在vue3中都能够使用,但是尽量不要将vue3中的配置项和vue2.x配置项混用;

②、vue2.x配置(data、methods、computed等)中可以访问setup中的属性、方法,但是在setup中不能访问vue2.x配置(data、methods、computed等);

③、如果vue2配置与vue3配置存在重名,则以谁在上面谁优先展示;

④、setup不能是一个async函数,因为返回值不再是return的对象,而是promise,模板看不到return对象中的属性;


相关文章
|
25天前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
22天前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
50 7
|
23天前
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
41 3
|
22天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
39 1
|
22天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
44 1
|
25天前
|
前端开发 JavaScript
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
|
25天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
28天前
|
JavaScript API
vue3知识点:ref函数
vue3知识点:ref函数
33 2
|
28天前
|
JavaScript 前端开发 API
vue3知识点:Vue3.0中的响应式原理和 vue2.x的响应式
vue3知识点:Vue3.0中的响应式原理和 vue2.x的响应式
25 0
|
7天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
vue学习第四章
下一篇
无影云桌面