Vue3 使用 自定义 hooks获取dom元素的问题

在自定义hooks的onMounted事件里面 获取ref元素,组件调用hooks的时候必须要传递响应式对象。

分享下楼主自己的观点,代码如下

<script>
// demo.vue
import { defineComponent, ref } from 'vue'
import useBars from './useBars'
export default defineComponent({
    props: {
        Bars: Array,
    },
    setup() {
        const rootRef = ref(null)

        const { currentPageIndex } = useBars(rootRef) // 这里传递过去的是一个响应式对象
		
		 const { currentPageIndex: currentPageIndex1  } = useBars(rootRef) // 这里传递过去的就是一个null,而不是对象
        console.log('组件 setup 最后一段')
        return {
            rootRef,
            currentPageIndex,
        }
    },
})
</script>
// useBar.js
import { onMounted } from 'vue'

export default function useSliders(rootRef) {
	
/**
     * 1. 传递过来是一个响应式对象
     *
     *  传过来是一个响应式对象,调用这个函数的时候rootRef.value = nul
     *  组件实例化完毕,在组件里面 rootRef.value = <div></div>
     *  执行 这个onmonted事件,里面就获取到了一个div,这个onMounted事件是当组件实例化完毕才会执行的
     */

    /**
     *  传过来就是一个null
     *   onMounted 执行的时候自然也是null
     * 
     */

    // ! 感觉是访问同一个地址,如果传递一个响应式对象,然后组件里面给 rootRef.value赋值,这里就也能拿到了


    onMounted(() => {
        // debugger
        console.log('hooks slider mounted --->', rootRef)
    })

    return {}
}```

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值