• 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函数不能是异步的,只能为同步函数!!!

  • 相关阅读:
    Web前端开发之HTML_2
    如何压缩图片200k以下?
    Linux:GlusterFS 集群
    UG\NX二次开发 二维向量相加
    单例设计模式常见的七种写法
    webman跨域相关问题
    python如何快速的判断一个key在json的第几层呢,并修改其value值
    Py之PyGTK:PyGTK的简介、安装、使用方法之详细攻略
    剑指offer常见题 - 二叉树问题(三)
    切面aspect处理fegin调用转本地调用
  • 原文地址:https://blog.csdn.net/COCOLI_BK/article/details/125445877