vue組件屬性(props)及私有數(shù)據(jù)data解析
vue組件中,props是公有屬性,主要對外,相當于類里面的get、set方法操作的屬性;data是私有數(shù)據(jù),主要供組件內(nèi)部訪問。
vue作為一種前端開發(fā)框架,組件是其中的主角吧。其實任何一種前端框架,除了vue,還有react,組件都應該是主角。為啥呢,因為組件最能體現(xiàn)面向?qū)ο笏枷耄瑔我宦氊?,良好的封裝性,高內(nèi)聚,低耦合,利于復用和維護,提升開發(fā)效率,符合人類思維模式。。。好處多多。
所謂的前端,就是跑在瀏覽器一側(cè)的代碼。以前的前端代碼,寫的時候是什么樣,最終運行的時候就是什么樣,完全由瀏覽器解釋運行,所以也叫靜態(tài)頁面?,F(xiàn)在的前端開發(fā)框架完全不是這樣,它類似于服務(wù)器端的開發(fā)模式,代碼寫好之后,需要編譯、發(fā)布。這就為代碼的組件化創(chuàng)造了條件。如果想完全用html,js這類純原生的代碼實現(xiàn)復用,是非常困難的。
比如js,引入js文件當然可以復用,但粒度比較粗的情況下,冗余量大,并且想在運行的時候各種參數(shù)傳遞,組合,提供動態(tài)生成效果,不是一般的困難,根本提供不了像asp.net,jsp這種有服務(wù)器加持,先由服務(wù)器解釋,生成,再輸出到瀏覽器端這種便利。
可以這么說,前端代碼只有采用各種打包工具進行發(fā)布這種模式,或者有了react、vue等開發(fā)框架,才使得前后端分離真正落地。
扯遠了。vue組件中,props代表公有屬性,主要對外,可用于接收父組件或頁面?zhèn)鬟f過來的參數(shù);data則代表私有數(shù)據(jù),組件內(nèi)部使用,不推薦外部進行操作或讀取。當然,你硬是要訪問,應該也能訪問得了。
props
1、組件Comp1.vue
<template>
<div>
{{info}}
</div>
</template>
<script>
let _info = "加油!"
export default {
props: {
info: {
default: _info
}
}
/*
寫成 props: ['info'] 也可以,但沒有默認值
*/
}
</script>
2、使用了Comp1的頁面
<template>
<div>
<div>
<Comp1 />
</div>
<div>
<Comp1 info="要堅持!" />
</div>
<div>
<Comp1 :info="ourInfo" />
</div>
</div>
</template>
<script>
import Comp1 from './Comp1.vue'
export default{
components:{
Comp1
},
data(){
return {
ourInfo:'別放棄!'
}
}
}
</script>
3、運行結(jié)果

data
<template>
<div>
<div>
<Comp1 />
</div>
<div>
<Comp1 info="要堅持!" />
</div>
<div>
<Comp1 :info="ourInfo" />
</div>
<div>
{{ourInfo2}}
</div>
<div>
{{ourInfo3}}
</div>
</div>
</template>
<script>
import Comp1 from './Comp1.vue'
export default{
components:{
Comp1
},
data(){//Vue 在創(chuàng)建新組件實例的過程中調(diào)用此函數(shù)
return {
ourInfo:'別放棄!',
ourInfo2:'盡人事,聽天命!',
ourInfo3:'盡人事,聽天命!'
}
},
mounted(){
this.ourInfo3 = '只管努力去做,但求無愧于心'
}
}
</script>

props由外部傳入,通常通過attribute的方式傳入,到了組件這里,一般不做修改;data則在組件內(nèi)部自行操控。二者都對應數(shù)據(jù),但有所區(qū)別。
子組件中data和props的區(qū)別
子組件中的data數(shù)據(jù),不是通過父組件傳遞的是子組件私有的,是可讀可寫的。
子組件中的所有 props中的數(shù)據(jù),都是通過父組件傳遞給子組件的,是只讀的。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
elementplus el-table(行列互換)轉(zhuǎn)置的兩種方法
本文主要介紹了elementplus el-table(行列互換)轉(zhuǎn)置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-06-06
如何使用Vue3.2+Vite2.7從0快速打造一個UI組件庫
構(gòu)建工具使用vue3推薦的vite,下面這篇文章主要給大家介紹了關(guān)于如何使用Vue3.2+Vite2.7從0快速打造一個UI組件庫的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-09-09
electron踩坑之remote of undefined的解決
這篇文章主要介紹了electron踩坑之remote of undefined的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
Vue首屏加載過慢出現(xiàn)長時間白屏的實現(xiàn)
本文主要介紹了Vue首屏加載過慢出現(xiàn)長時間白屏的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04
實現(xiàn)Vue的markdown文檔可以在線運行的方法示例
這篇文章主要介紹了實現(xiàn)Vue的markdown文檔可以在線運行的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12

