欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

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

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

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

          本教程操作環(huán)境:windows7系統(tǒng)、vue3版,DELL G3電腦。

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

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

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

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

          Vue.component('component1',{     template:`<div>組件</div>`,     data:{         foo:"foo"     } })
          登錄后復(fù)制

          則會得到警告信息

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

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

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

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

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

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

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

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

          結(jié)論

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

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

          說明:

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

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

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

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

          (學(xué)習(xí)視頻分享:web前端開發(fā)、編程基礎(chǔ)視頻)

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號