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

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

vue組件中data能不能是函數(shù)

這篇“vue組件中data能不能是函數(shù)”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue組件中data能不能是函數(shù)”文章吧。

盤龍ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

不是,vue組件中data必須是一個函數(shù)。vue中組件是用來復用的,為了防止data復用,將其定義為函數(shù)。vue組件中的data數(shù)據(jù)都應(yīng)該是相互隔離,互不影響的,組件每復用一次,data數(shù)據(jù)就應(yīng)該被復制一次,之后,當某一處復用的地方組件內(nèi)data數(shù)據(jù)被改變時,其他復用地方組件的data數(shù)據(jù)不受影響,就需要通過data函數(shù)返回一個對象作為組件的狀態(tài)。

vue實例的時候定義data屬性既可以是一個對象,也可以是一個函數(shù)

const app = new Vue({
    el:"#app",
    // 對象格式
    data:{
        foo:"foo"
    },
    // 函數(shù)格式
    data(){
        return {
             foo:"foo"
        }
    }
})

但,組件中定義data屬性,只能是一個函數(shù)

如果為組件data直接定義為一個對象

Vue.component('component1',{
    template:`
組件
`,     data:{         foo:"foo"     } })

則會得到警告信息

vue組件中data能不能是函數(shù)

警告說明:返回的data應(yīng)該是一個函數(shù)在每一個組件實例中

為什么data屬性是一個函數(shù)而不是一個對象?

Vue組件中data屬性不能為對象原因是對象是引用類型,組件會被多個實例同時引用導致的結(jié)果就是多個實例共享一個對象,其中一個組件改變了data對象中的值,其他實例也會受到影響。

如圖所示,組件復用后,隨機點擊其中一個組件中的按鈕其他兩個組件的數(shù)值也會受到影響

vue組件中data能不能是函數(shù)

vue組件data為函數(shù)的原因:data為函數(shù),通過return返回對象,可以實現(xiàn)每個實例都有自己獨立的對象,實例之間互不影響;如下圖所示

vue組件中data能不能是函數(shù)

結(jié)論

根實例對象data可以是對象也可以是函數(shù)(根實例是單例),不會產(chǎn)生數(shù)據(jù)污染情況

組件實例對象data必須為函數(shù),目的是為了防止多個組件實例對象之間共用一個data,產(chǎn)生數(shù)據(jù)污染。采用函數(shù)的形式,initData時會將其作為工廠函數(shù)都會返回全新data對象

說明:

  • vue中組件是用來復用的,為了防止data復用,將其定義為函數(shù)。

  • vue組件中的data數(shù)據(jù)都應(yīng)該是相互隔離,互不影響的,組件每復用一次,data數(shù)據(jù)就應(yīng)該被復制一次,之后,當某一處復用的地方組件內(nèi)data數(shù)據(jù)被改變時,其他復用地方組件的data數(shù)據(jù)不受影響,就需要通過data函數(shù)返回一個對象作為組件的狀態(tài)。

  • 當我們將組件中的data寫成一個函數(shù),數(shù)據(jù)以函數(shù)返回值形式定義,這樣每復用一次組件,就會返回一份新的data,擁有自己的作用域,類似于給每個組件實例創(chuàng)建一個私有的數(shù)據(jù)空間,讓各個組件實例維護各自的數(shù)據(jù)。

  • 當我們組件的date單純的寫成對象形式,這些實例用的是同一個構(gòu)造函數(shù),由于JavaScript的特性所導致,所有的組件實例共用了一個data,就會造成一個變了全都會變的結(jié)果。

以上就是關(guān)于“vue組件中data能不能是函數(shù)”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁名稱:vue組件中data能不能是函數(shù)
文章來源:http://weahome.cn/article/jshepj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部