• Vue---vue3的setup函数的使用


    setup注意点:

     setup的使用:

    1.setup 函数时,它将接受两个参数:(props、context(包含attrs、slots、emit))

    1. context包含三个参数,可通过解构方式写
    2. context该上下文对象是非响应式的,可以安全地解构:
    3. export default {
    4. setup(props, { attrs, slots, emit, expose }) {
    5. // Attribute(非响应式的对象,等价于 $attrs)
    6. console.log(attrs)
    7. // 插槽(非响应式的对象,等价于 $slots)
    8. console.log(slots)
    9. // 触发事件(函数,等价于 $emit)
    10. console.log(emit)
    11. // 暴露公共 property(函数)
    12. console.log(expose)
    13. }
    14. }

    2.setup函数执行时机是在beforeCreated和created两个周期函数之前

    3.setup里面没有vue实例,故想通过this访问会是undefined,即第一张图提示文字所述

    4.setup函数中所定义的所有变量和方法,谨记要return出去,否则在vue文件(模板)中无法使用

    5.在渲染函数中可以直接使用在同一作用域下声明的响应式状态:

    1. import { h, ref } from 'vue'
    2. export default {
    3. setup() {
    4. const count = ref(0)
    5. return () => h('div', count.value)
    6. }
    7. }
    8. // 直接使用count.vue的方式

    6.子组件组件内部的方法想暴露给父组件通过ref方式去获取使用,通过expose方法即可

    1. import { ref } from 'vue'
    2. export default {
    3. setup(props, { expose }) {
    4. const num= ref(0)
    5. const count = ref(0)
    6. const increment = () => ++count.value
    7. expose({
    8. count,
    9. increment
    10. })
    11. }
    12. }
    13. 父组件: <child ref='childCom'></child>
    14. 调用: this.$refs.childCom.increment // 成功,可以获取到对应方法
    15. 调用: this.$refs.childCom.count // 成功,可以获取到对应值
    16. 调用: this.$refs.childCom.num // 失败,不可以获取到对应值
    17. expose未导出的属性,父组件中调用就会是undefined,即未暴露的属性或方法父组件是拿不到的!!!

    再次强调下:

    1.setup函数中不能使用this,即此时为包含vue实例,打印即为undefined

    2.setup函数中props入参是响应式的不能通过解构来使用,否则会丢失响应式,想解构在函数内部通过toRefs来使用

    1. import { toRefs, toRef } from 'vue'
    2. export default {
    3. setup(props) {
    4. // 将 `props` 转为一个其中全是 ref 的对象,然后解构
    5. const { title } = toRefs(props)
    6. // `title` 是一个追踪着 `props.title` 的 ref
    7. console.log(title.value)
    8. // 或者,将 `props` 的单个 property 转为一个 ref
    9. const title = toRef(props, 'title')
    10. }
    11. }

     3.setup函数中使用的响应式数据,要通过对应变量.value获取

    1. import { ref } from 'vue'
    2. const count = ref(0)
    3. console.log(count.value) // 0

    4.setup函数return后的属性,在模板中不用使用.value,直接使用变量名即可(它会自动暴露值)

    5.setup函数不能是异步的,只能为同步函数!!!

  • 相关阅读:
    C++逻辑运算符
    dvadmin-打包发布-nginx-静态服务器配置-防火墙设置
    Java反射
    【初阶C语言】操作符2---表达式求值
    基于thinkphp5的物业管理系统
    粤嵌实训医疗项目--day01(Vue+SpringBoot)
    前OpenAI联创、ChatGPT负责人John Schulman:大模型的升级秘诀
    网络丢包问题,敢不敢这样定位?
    “华为杯”研究生数学建模竞赛2019年-【华为杯】F题:智能飞行器航迹规划模型(中)(附优秀论文及Pyhton代码实现)
    Redis05:Redis高级部分
  • 原文地址:https://blog.csdn.net/COCOLI_BK/article/details/125445877