最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Vue3 Composition API中的提取和重用邏輯

 更新時(shí)間:2020年04月29日 11:39:51   作者:杜尼卜  
這篇文章主要介紹了Vue3 Composition API中的提取和重用邏輯,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Vue3 Composition API可以在大型項(xiàng)目中更好地組織代碼。然兒,隨著使用幾種不同的選項(xiàng)屬性切換到單一的setup 方法,許多開發(fā)人員面臨的問(wèn)題是……

這會(huì)不會(huì)更混亂,因?yàn)橐磺卸荚谝粋€(gè)方法中

乍一看可能很容易,但是實(shí)際上只需要花一點(diǎn)點(diǎn)時(shí)間來(lái)編寫可重用的模塊化代碼。

讓我們來(lái)看看如何做到這一點(diǎn)。

問(wèn)題

Vue.js 2.x 的 Options API 是一種非常直觀的分隔代碼的方法

export default {
 data () {
  return {
   articles: [],
   searchParameters: []
  }
 },
 mounted () {
  this.articles = ArticlesAPI.loadArticles()
 },
 methods: {
  searchArticles (id) {
   return this.articles.filter(() => {
    // 一些搜索代碼
   })
  }
 }
}

問(wèn)題是,如果一個(gè)組件中有數(shù)百行代碼,那么就必須在多個(gè)部分data、methods、computed等中為單個(gè)特性(例如搜索)添加代碼。

這意味著僅一項(xiàng)功能的代碼可能會(huì)分散分布在數(shù)百行中,并分布在幾個(gè)不同的位置,從而使其難以閱讀或調(diào)試。圖片描述

這只是Vue Composition API RFC中的一個(gè)示例,展示了現(xiàn)在如何按功能組織代碼。

現(xiàn)在,這是使用新的Composition API的等效代碼。

import { ref, onMounted } from 'vue'

export default {
 setup () {
  const articles = ref([])
  const searchParameters = ref([])

  onMounted(() => {
   this.articles = ArticlesAPI.loadArticles()
  })

  const searchArticles = (id) => {
   return articles.filter(() => {
    // 一些搜索代碼
   })
  }

  return {
   articles,
   searchParameters,
   searchArticles
  }
 }
}

現(xiàn)在,為了解決前面關(guān)于組織的問(wèn)題,我們來(lái)看看一個(gè)提取邏輯的好方法。

提取邏輯

我們的最終目標(biāo)是將每個(gè)功能提取到自己的方法中。這樣一來(lái),如果我們想調(diào)試它,所有的代碼都在一個(gè)地方。

這非常簡(jiǎn)單,但是最后我們必須記住,如果我們希望能夠在模板中訪問(wèn)數(shù)據(jù),則仍然必須使用我們的 setup 方法來(lái)返回?cái)?shù)據(jù)。

我們來(lái)創(chuàng)建新方法 useSearchArticles 并讓它返回我們?cè)?setup 方法中返回的所有東西。

const useSearchArticles = () => {
 const articles = ref([])
 const searchParameters = ref([])

 onMounted(() => {
  this.articles = ArticlesAPI.loadArticles()
 })

 const searchArticles = (id) => {
  return articles.filter(() => {
   // 一些搜索代碼
  })
 }

 return {
  articles,
  searchParameters,
  searchArticles
 }
}

現(xiàn)在,在我們的 setup 方法中,我們可以通過(guò)調(diào)用我們的方法來(lái)訪問(wèn)屬性。而且,當(dāng)然,我們還必須記住從設(shè) setup 法中返回它們。

export default {
 setup () {
  const { articles, searchParameters, searchArticles } = useSearchArticles()

  return {
   articles,
   searchParameters,
   searchArticles
  }
 }
}

在提取的邏輯中訪問(wèn)組件屬性

Composition API 中的另一個(gè)新變化是 this 引用的變化,這一變化意味著我們不能再以相同的方式使用 prop、attributes 或 events。

簡(jiǎn)而言之,我們將必須使用 setup 方法的兩個(gè)參數(shù)來(lái)訪問(wèn) props,attribute,slot 或 emit 方法。如果我們只使用 setup 方法,一個(gè)快速的虛擬組件可能是這樣的。

export default {
 setup (props, context) {

  onMounted(() => {
   console.log(props)
   context.emit('event', 'payload')
  })
 }
}

但是現(xiàn)在我們要提取我們的邏輯,我們要把我們的邏輯包裝器方法也接受參數(shù)。通過(guò)這種方式,我們可以從 setup 方法傳遞我們的 props 和 context 屬性,邏輯代碼可以訪問(wèn)它們。

const checkProps = (props, context) => {
 onMounted(() => {
  console.log(props)
  context.emit('event', 'payload')
 })
}
export default {
 setup (props, context) {
  checkProps(props, context)
 }
}

重用邏輯

最后,如果我們要編寫一些邏輯,希望能夠在多個(gè)組件中使用,則可以將邏輯提取到其自己的文件中,并將其導(dǎo)入到我們的組件中。

然后,我們可以像之前一樣調(diào)用該方法。假設(shè)我們將我們的 useSearchArticles 方法移至名為 use-search-articles-logic.js 的文件中,如下所示

import { ref, onMounted } from 'vue'
export function useSearchArticles () {
 const articles = ref([])
 const searchParameters = ref([])

 onMounted(() => {
  this.articles = ArticlesAPI.loadArticles()
 })

 const searchArticles = (id) => {
  return articles.filter(() => {
   // 一些搜索代碼
  })
 }

 return {
  articles,
  searchParameters,
  searchArticles
 }
}

使用這個(gè)新文件,我們的原始組件將看起來(lái)像這樣

import { useSearchArticles } from './logic/use-search-articles-logic'
export default {
 setup (props,) {
  const { articles, searchParameters, searchArticles } = useSearchArticles()

  return {
   articles,
   searchParameters,
   searchArticles
  }
 }
}


最后

希望本文能幫助你更好地了解 Composition API 將如何改變我們的編碼方式。

但是,與往常一樣,項(xiàng)目的組織取決于開發(fā)人員設(shè)計(jì)出色的組件代碼并創(chuàng)建可重用邏輯的意愿。

請(qǐng)記住,我們的目標(biāo)是提高可讀性,而在Vue中,Composition API 是實(shí)現(xiàn)這一點(diǎn)的好方法。

到此這篇關(guān)于詳解Vue3 Composition API中的提取和重用邏輯的文章就介紹到這了,更多相關(guān)Vue3 Composition提取和重用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • vue 實(shí)現(xiàn)dot-dropdown的實(shí)例代碼

    vue 實(shí)現(xiàn)dot-dropdown的實(shí)例代碼

    這篇文章主要介紹了vue實(shí)現(xiàn)dot-dropdown的相關(guān)操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2025-06-06
  • vue3中的watch和watchEffect實(shí)例詳解

    vue3中的watch和watchEffect實(shí)例詳解

    watch和watchEffect都是監(jiān)聽(tīng)器,但在寫法和使用上有所區(qū)別,下面這篇文章主要給大家介紹了關(guān)于vue3中watch和watchEffect的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 淺談Vue.js 中的 v-on 事件指令的使用

    淺談Vue.js 中的 v-on 事件指令的使用

    這篇文章主要介紹了淺談Vue.js 中的 v-on 事件指令的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • vue component組件使用方法詳解

    vue component組件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue component組件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • vue?axios中的get請(qǐng)求方式

    vue?axios中的get請(qǐng)求方式

    這篇文章主要介紹了vue?axios中的get請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue-cli項(xiàng)目配置多環(huán)境的詳細(xì)操作過(guò)程

    vue-cli項(xiàng)目配置多環(huán)境的詳細(xì)操作過(guò)程

    vue-cli 默認(rèn)只提供了 dev 和 prod 兩種環(huán)境。這篇文章主要介紹了vue-cli項(xiàng)目配置多環(huán)境的詳細(xì)操作過(guò)程,需要的朋友可以參考下
    2018-10-10
  • mint-ui在vue中的使用示例

    mint-ui在vue中的使用示例

    Mint UI 是 由餓了么前端團(tuán)隊(duì)推出的 一個(gè)基于 Vue.js 的移動(dòng)端組件庫(kù),這篇文章主要介紹了mint-ui在vue中的使用示例,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下
    2018-04-04
  • vant list組件滾動(dòng)保留滾動(dòng)條位置

    vant list組件滾動(dòng)保留滾動(dòng)條位置

    這篇文章主要介紹了vant list組件滾動(dòng)保留滾動(dòng)條位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • elementui的table根據(jù)是否符合需求合并列的實(shí)現(xiàn)代碼

    elementui的table根據(jù)是否符合需求合并列的實(shí)現(xiàn)代碼

    這篇文章主要介紹了elementui的table根據(jù)是否符合需求合并列的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-03-03
  • Vue3異步組件Suspense的使用方法詳解

    Vue3異步組件Suspense的使用方法詳解

    這篇文章主要介紹了Vue3異步組件Suspense的使用方法詳解,需要的朋友可以參考下
    2023-01-01

最新評(píng)論

苍溪县| 阿拉善右旗| 岱山县| 敖汉旗| 承德市| 璧山县| 贵溪市| 台南市| 深圳市| 鄂尔多斯市| 平果县| 寻乌县| 宜章县| 崇州市| 买车| 浠水县| 尖扎县| 正镶白旗| 北流市| 文山县| 紫云| 库尔勒市| 静安区| 敦化市| 万荣县| 时尚| 门源| 洮南市| 囊谦县| 防城港市| 阳东县| 福贡县| 剑河县| 隆昌县| 浦东新区| 苗栗县| 郁南县| 大港区| 田阳县| 广灵县| 易门县|