Vue3自定义Hooks写法

       Vue3提供了一套全新的Composition API(组合式 API),可以使用函数式写法来封装组件,和传统的类写法有着比较大的区别,Hooks写法没有了this指针,生命周期函数更名,路由和vuex的写法也全部变成了函数式写法。

      如果一个组件很复杂,我们把所有的逻辑都写在setup()中的话,会造成代码可读性很低,代码混乱,不利于维护。所以我们可以用自定义Hooks写法,也就是抽离式写法,把页面的部分逻辑抽离出来,写在单个文件中,以达到减低代码耦合度,提高复用性的作用。

基础写法:

       例如,我们在一个组件中请求了一份数据赋值给组件中的某个状态,传统写法是写在当前组件中的:

<script>
import { reactive, onMounted } from 'vue'
import axios from 'axios'

export default {
  setup() {
    const obj = reactive({
      dataList: []
    })

    onMounted(() => {
      axios.get({
        url: '你的路径/xxx.json'
      }).then((res) => {
        dataList = res.data
      })
    })

    return {
      obj
    }
  }
}
</script>

但现在我们可以把这段代码给抽离出来放在单独的文件getData.js中,然后在这个组件中引入即可:

在getData.js中书写如下代码:

import { reactive, onMounted } from 'vue'
import axios from 'axios'

function getData() {
  const obj = reactive({
      list: []
  })

  onMounted(() => {
    axios.get({
      url: '你的路径/xxx.json'
    }).then((res) => {
      list = res.data
    })
  })

  return obj
}

export { getData }

在组件中引入:

<script>
import { getData } from '你的路径/getData.js'

export default {
  setup() {
    const obj = getData()

    return {
      obj
    }
  }
}
</script>

自定义Hooks写法实现了相同的效果,将部分逻辑抽离出来,在逻辑非常多的组件中极大的降低了耦合度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3的自定义hooks函数是在Vue3中使用Composition API的一种方式。它允许我们在setup函数中定义函数和状态,并将其封装在外部的js文件中,以便在主文件中进行调用。通过使用自定义hooks函数,我们可以实现函数的复用,使代码更加简洁高效。自定义hooks函数可以帮助我们提高代码的复用性,让我们能够在不同的组件中都利用hooks函数。虽然使用Composition API可能会比之前的Vue写法更加麻烦,但是通过使用自定义hooks函数,我们可以实现函数编程的复用,使代码更加简洁高效。在前端领域,Hooks并没有明确定义,但在Vue3中,自定义Hooks函数被广泛应用于开发中,它可以集成定义一些可复用的方法,让我们的代码更加丰满。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [学习Vue3 第二十八章(自定义Hooks)](https://blog.csdn.net/qq1195566313/article/details/123271189)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [对vue3自定义hooks的理解](https://blog.csdn.net/a1598452168YY/article/details/128294569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue3必学技能--自定义Hooksvue3更加畅快](https://blog.csdn.net/qq_39197547/article/details/125740319)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值