欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

這會不會更混亂,因為一切都在一個方法中

乍一看可能很容易,但是實際上只需要花一點點時間來編寫可重用的模塊化代碼。

讓我們來看看如何做到這一點。

問題

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

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

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

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

這只是Vue Composition API RFC中的一個示例,展示了現(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)在,為了解決前面關于組織的問題,我們來看看一個提取邏輯的好方法。

提取邏輯

我們的最終目標是將每個功能提取到自己的方法中。這樣一來,如果我們想調試它,所有的代碼都在一個地方。

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

我們來創(chuàng)建新方法 useSearchArticles 并讓它返回我們在 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 方法中,我們可以通過調用我們的方法來訪問屬性。而且,當然,我們還必須記住從設 setup 法中返回它們。

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

  return {
   articles,
   searchParameters,
   searchArticles
  }
 }
}

在提取的邏輯中訪問組件屬性

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

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

export default {
 setup (props, context) {

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

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

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

重用邏輯

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

然后,我們可以像之前一樣調用該方法。假設我們將我們的 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
 }
}

使用這個新文件,我們的原始組件將看起來像這樣

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

  return {
   articles,
   searchParameters,
   searchArticles
  }
 }
}


最后

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

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

請記住,我們的目標是提高可讀性,而在Vue中,Composition API 是實現(xiàn)這一點的好方法。

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

相關文章

  • NUXT SSR初級入門筆記(小結)

    NUXT SSR初級入門筆記(小結)

    這篇文章主要介紹了NUXT SSR初級入門筆記(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 使用vue.js2.0 + ElementUI開發(fā)后臺管理系統(tǒng)詳細教程(二)

    使用vue.js2.0 + ElementUI開發(fā)后臺管理系統(tǒng)詳細教程(二)

    這篇文章主要介紹了使用vue.js2.0 + ElementUI開發(fā)后臺管理系統(tǒng)詳細教程(二),非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-01-01
  • Vue之表單事件數(shù)據(jù)綁定詳解

    Vue之表單事件數(shù)據(jù)綁定詳解

    這篇文章主要為大家介紹了Vue之表單事件的數(shù)據(jù)綁定,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助,希望能夠給你帶來幫助
    2021-11-11
  • 關于ElementPlus中的表單驗證規(guī)則詳解

    關于ElementPlus中的表單驗證規(guī)則詳解

    這篇文章主要介紹了關于ElementPlus中的表單驗證,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • vue2.x中$attrs的使用方法教程

    vue2.x中$attrs的使用方法教程

    正常情況下Vue推薦用props向子組件參數(shù),但是在特定場景下,使用$attrs會更方便,下面這篇文章主要給大家介紹了關于vue2.x中$attrs使用的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • nuxt 實現(xiàn)在其它js文件中使用store的方式

    nuxt 實現(xiàn)在其它js文件中使用store的方式

    這篇文章主要介紹了nuxt 實現(xiàn)在其它js文件中使用store的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 如何在Vue中使用debouce防抖函數(shù)

    如何在Vue中使用debouce防抖函數(shù)

    本文主要介紹在Vue中使用debouce防抖函數(shù),設置一個門檻值,表示兩次?Ajax?通信的最小間隔時間。如果在間隔時間內,發(fā)生新的keydown事件,則不觸發(fā)?Ajax?通信,并且重新開始計時。如果過了指定時間,沒有發(fā)生新的keydown事件再將數(shù)據(jù)發(fā)送出去,這便是debouce防抖函數(shù)
    2021-12-12
  • vue實現(xiàn)下拉框篩選表格數(shù)據(jù)

    vue實現(xiàn)下拉框篩選表格數(shù)據(jù)

    這篇文章主要為大家詳細介紹了vue實現(xiàn)下拉框篩選表格數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 解決vue-router路由攔截造成死循環(huán)問題

    解決vue-router路由攔截造成死循環(huán)問題

    這篇文章主要介紹了解決vue-router路由攔截造成死循環(huán)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue實現(xiàn)循環(huán)滾動圖片

    vue實現(xiàn)循環(huán)滾動圖片

    這篇文章主要為大家詳細介紹了vue實現(xiàn)循環(huán)滾動圖片,多圖片輪播,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論