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

data
<template>
<div>
<div>
<Comp1 />
</div>
<div>
<Comp1 info="要堅(jiān)持!" />
</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)建新組件實(shí)例的過程中調(diào)用此函數(shù)
return {
ourInfo:'別放棄!',
ourInfo2:'盡人事,聽天命!',
ourInfo3:'盡人事,聽天命!'
}
},
mounted(){
this.ourInfo3 = '只管努力去做,但求無愧于心'
}
}
</script>

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

