真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

Vue中computed、methods、watch三者的區(qū)別是什么-創(chuàng)新互聯

本篇文章為大家展示了Vue中computed、methods、watch三者的區(qū)別是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

10年積累的做網站、網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有惠陽免費網站建設讓你可以放心的選擇與我們合作。

Methods

在一個方法中,或多或少是您所期望的——一個對象屬性的函數。您可以使用方法對發(fā)生在DOM中的事件作出反應,或者可以從組件中的其他位置調用它們,例如,從計算屬性或觀察者中調用它們。方法用于對公共功能進行分組-例如,處理表單提交,或構建可重用的功能,如發(fā)出Ajax請求。

在Vue實例中的methods對象內創(chuàng)建方法:

new Vue({
 el: "#app",
 methods: {
 handleSubmit() {}
 }
})

當您想在模板中使用它時,您可以這樣做:


 
 Submit
 

我們使用v-on指令將事件處理程序附加到dom元素,該元素也可以縮寫為@符號。

現在,每次單擊按鈕時都會調用handleSubmit方法。對于要傳遞方法體中需要的參數的實例,可以執(zhí)行以下操作:


 
 Submit
 

這里我們傳遞一個事件對象,例如,它允許我們在表單提交的情況下阻止瀏覽器的默認操作。

但是,當我們使用一個指令來附加事件時,我們可以使用一個修飾符來更優(yōu)雅地實現相同的事情: @click.stop=“handleSubmit” 。

現在我們來看一個使用方法過濾數組中數據列表的示例。

In the demo, we want to render a list of data and a search box. The data rendered changes whenever a user enters a value in the search box. The template will look like this:

在演示中,我們要呈現一個數據列表和一個搜索框。每當用戶在搜索框中輸入值時,所呈現的數據都會發(fā)生更改。模板將如下所示:


 

Language Search

     
   {{ item }}  

如您所見,我們引用的是handlesearch方法,每次用戶在搜索字段中鍵入內容時都會調用該方法。我們需要創(chuàng)建方法和數據:

new Vue({
 el: '#app',
 data() {
 return {
  input: '',
  languages: []
 }
 },
 methods: {
 handleSearch() {
  this.languages = [
  'JavaScript',
  'Ruby',
  'Scala',
  'Python',
  'Java',
  'Kotlin',
  'Elixir'
  ].filter(item => item.toLowerCase().includes(this.input.toLowerCase()))
 }
 },
 created() { this.handleSearch() }
})

handlesearch方法使用輸入字段的值更新列出的項。需要注意的一點是,在methods對象中,不需要使用this.handlesearch引用該方法(正如在react中必須做的那樣)

Computed Properties

雖然上面示例中的搜索可以按預期工作,但更優(yōu)雅的解決方案是使用計算屬性。計算屬性對于從現有源組合新數據非常方便,與方法相比,它們的一大優(yōu)點是緩存了輸出。這意味著,如果獨立于計算屬性的某些內容在頁面上發(fā)生更改,并且重新呈現UI,則會返回緩存的結果,并且不會重新計算計算計算屬性,從而避免了可能代價高昂的操作。

計算屬性使我們能夠使用我們可用的數據進行即時計算。在本例中,我們有一個需要排序的項目數組。我們希望在用戶在輸入字段中輸入值時進行排序。

我們的模板看起來幾乎與前面的迭代相同,除了我們正在傳遞v-for指令一個計算屬性(filteredlist):


 

Language Search

         {{ item }}  

腳本部分略有不同。我們聲明了數據屬性中的語言(以前這是一個空數組),而不是方法,我們將邏輯移入了計算屬性:

new Vue({
 el: "#app",
 data() {
 return {
  input: '',
  languages: [
  "JavaScript",
  "Ruby",
  "Scala",
  "Python",
  "Java",
  "Kotlin",
  "Elixir"
  ]
 }
 },
 computed: {
 filteredList() {
  return this.languages.filter((item) => {
  return item.toLowerCase().includes(this.input.toLowerCase())
  })
 }
 }
})

filteredList計算屬性將包含包含輸入字段值的項數組。在第一次渲染時(當輸入字段為空時),將渲染整個數組。當用戶在字段中輸入值時,filteredList將返回一個數組,其中包含輸入到字段中的值。

使用計算屬性時,要計算的數據必須可用,否則將導致應用程序出錯

computed屬性創(chuàng)建了一個新的filteredlist屬性,這就是為什么我們可以在模板中引用它。每次依賴項執(zhí)行此操作時,filteredlist的值都會更改。這里容易改變的依賴項是輸入值。

最后,請注意,計算屬性允許我們在模板中創(chuàng)建一個變量,該變量是由一個或多個數據屬性構建的。一個常見的例子是從這樣一個用戶的名字和姓氏創(chuàng)建一個全名:

computed: {
 fullName() {
 return `${this.firstName} ${this.lastName}`
 }
}

在模板中,您可以執(zhí)行全名。每當名字或姓氏的值更改時,全名的值將更改。

Watchers

Watchers對于希望響應已發(fā)生的更改(例如,屬性或數據屬性)執(zhí)行操作的情況非常有用。正如Vue文檔所提到的,當您想要執(zhí)行異步或昂貴的操作以響應不斷變化的數據時,這是最有用的。

在搜索示例中,我們可以返回到方法示例,并為輸入數據屬性設置一個觀察程序。然后我們可以對輸入值的任何變化作出反應。

首先,讓我們恢復模板以使用語言數據屬性:


 

Language Search

         {{ item }}  

然后我們的Vue實例將如下所示:

new Vue({
 el: "#app",
 data() {
 return {
  input: '',
  languages: []
 }
 },
 watch: {
 input: {
  handler() {
  this.languages = [
   'JavaScript',
   'Ruby',
   'Scala',
   'Python',
   'Java',
   'Kotlin',
   'Elixir'
  ].filter(item => item.toLowerCase().includes(this.input.toLowerCase()))
  },
  immediate: true
 }
 }
})

這里,我將觀察者設置為一個對象(而不是一個函數)。這是為了我可以指定一個即時屬性,它將導致觀察程序在組件被裝載后立即觸發(fā)。這會產生填充列表的效果。然后運行的函數在handler屬性中。

上述內容就是Vue中computed、methods、watch三者的區(qū)別是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。


新聞名稱:Vue中computed、methods、watch三者的區(qū)別是什么-創(chuàng)新互聯
轉載來于:http://weahome.cn/article/dgdijg.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部