日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解Vue中的Props與Data細(xì)微差別

瀏覽:223日期:2023-02-04 13:36:21

Vue提供了兩種不同的存儲(chǔ)變量:props和data。

這些方法一開(kāi)始可能會(huì)讓人感到困惑,因?yàn)樗鼈冏龅氖虑楹芟嗨疲乙膊磺宄埠螘r(shí)使用props,何時(shí)使用data。

那么props和data有什么區(qū)別呢?

data是每個(gè)組件的私有內(nèi)存,可以在其中存儲(chǔ)需要的任何變量。props是將數(shù)據(jù)從父組件傳遞到子組件的方式。

在本文中,我們將學(xué)習(xí)到:

什么是props,為什么這些數(shù)據(jù)只向下流動(dòng),而不是向上 data 選項(xiàng)的用途 響應(yīng)式是什么 如何避免 props 和 data 之間的命名沖突 如何將 props 和 data 結(jié)合使用

什么是 props

在Vue中,props(或properties)是我們將數(shù)據(jù)從父組件向下傳遞到其子組件的方式。

當(dāng)我們使用組件構(gòu)建應(yīng)用程序時(shí),最終會(huì)構(gòu)建一個(gè)稱為樹(shù)的數(shù)據(jù)結(jié)構(gòu)。 類似于家譜,具有:

父母 孩子 祖先 子孫

數(shù)據(jù)從根組件(位于最頂端的組件)沿著樹(shù)向下流動(dòng)。就像基因是如何代代相傳的一樣,父組件也會(huì)將自己的props傳給了他們的孩子。

在Vue中,我們?cè)诖a的<template>中向組件添加了一些props

<template> <my-component cool-prop='hello world'></my-component></template>

在這個(gè)例子中,我們傳遞一個(gè)名為color-prop prop,其值為“hello world”。我們能夠從my-component內(nèi)部訪問(wèn)這個(gè)值。

然而,當(dāng)我們從組件內(nèi)部訪問(wèn)props時(shí),我們并不擁有它們,所以我們不能更改它們(就像你不能改變你父母給你的基因一樣)。

注意:雖然可以更改組件中的屬性,但這是一個(gè)非常糟糕的主意。最終還會(huì)更改父類正在使用的值,這可能會(huì)導(dǎo)致很多混淆。但是有些情況我們需要改變變量,所以 data 就派上用場(chǎng)了。

什么是 data ?

data是每個(gè)組件的內(nèi)存,這是存儲(chǔ)數(shù)據(jù)和希望跟蹤的任何其他變量的地方。

如果我們正在構(gòu)建一個(gè)計(jì)數(shù)器應(yīng)用程序,我們將需要跟蹤計(jì)數(shù),因此我們將向我們的data添加一個(gè)count:

<template> <div> {{ count }} <button @click='increment'>+</button> <button @click='decrement'>-</button> </div></template>------------------------------------------export default { name: ’Counter’, data() { return { // Initialized to zero to begin count: 0, } }, methods: { increment() { this.count += 1; }, decrement() { this.count -= 1; } }}

此處的data是私有的,僅供組件本身使用,其他組件不能訪問(wèn)它。

注意:理論上是其它組件是不能訪問(wèn)這些數(shù)據(jù),但實(shí)際是可以的。但是出于同樣的原因,這樣做是非常糟糕的如果需要向組件傳遞數(shù)據(jù),可以使用props向下傳遞數(shù)據(jù)(傳遞給子組件),或者使用事件向上傳遞數(shù)據(jù)(傳遞給父組件)。

props 和 data 都是響應(yīng)式的

使用 Vue,我們不需要過(guò)多地考慮組件什么時(shí)候會(huì)更新,Vue 會(huì)自動(dòng)幫我們做好,因?yàn)?Vue 是響應(yīng)式的。

我們不必每次更改 data 都調(diào)用setState,只需更改data即可! 只要要更新具有響應(yīng)式的屬性(props,computed 及 data 中的任何值),Vue 就會(huì)知道它何時(shí)發(fā)生變化。

回到計(jì)數(shù)器應(yīng)用程序,我們仔細(xì)看看這里面的方法

methods: { increment() { this.count += 1; }, decrement() { this.count -= 1; }}

我們所要做的就是更新count,Vue 會(huì)檢測(cè)到這個(gè)變化,然后用新值重新渲染我們的應(yīng)用程序

Vue 的響應(yīng)系統(tǒng)有很多細(xì)微的差別,如果你想要高效地使用Vue,理解它是非常重要的。如果你想更深入地了解Vue的響應(yīng)系統(tǒng),這里有更多要了解的東西。

避免命名沖突

Vue所做的另一件事是,使開(kāi)發(fā)工作變得更好一點(diǎn)。

我們?cè)诮M件上定義一些 props 和 data

export default { props: [’propA’, ’propB’], data() { return { dataA: ’hello’, dataB: ’world’, }; },};

如果要在方法內(nèi)部訪問(wèn)它們,則不必使用this.props.propA或this.data.dataA。 Vue 讓我們完全省略了 props 和 dasta,只剩下了更整潔的代碼。

我們可以使用this.propA或this.dataA訪問(wèn)它們:

methods: { coolMethod() { // Access a prop console.log(this.propA); // Access our data console.log(this.dataA); }}

因此,如果我們不小心在data和 props中使用相同的名稱,則會(huì)遇到問(wèn)題。

如果發(fā)生這種情況,Vue 會(huì)給你一個(gè)警告,因?yàn)樗恢滥阆朐L問(wèn)哪個(gè)。

export default { props: [’secret’], data() { return { secret: ’1234’, }; }, methods: { printSecret() { // 我們想要哪一個(gè)? console.log(this.secret); } }};

當(dāng)我們同時(shí)使用props和data時(shí),Vue 的神奇之處就產(chǎn)生了。

props 和 data 一起使用

既然我們已經(jīng)看到了 props 和 data 的不同之處,讓我們來(lái)看看為什么我們需要兩個(gè),通過(guò)建立一個(gè)基本的應(yīng)用程序。

我們將使用名為ContactInfo的組件顯示此信息:

// ContactInfo<template> <div class='container'> <div class='row'> Email: {{ emailAddress }} Twitter: {{ twitterHandle }} Instagram: {{ instagram }} </div> </div></template>-------------------------------------export default { name: ’ContactInfo’, props: [’emailAddress’, ’twitterHandle’, ’instagram’],};

ContactInfo組件接受 props:emailAddress,twitterHandle和instagram,并將其顯示在頁(yè)面上。

我們的個(gè)人資料頁(yè)面組件ProfilePage如下所示:

// ProfilePage<template> <div class='profile-page'> <div class='avatar'> <img src='http://m.b3g6.com/bcjs/user.profilePicture' /> {{ user.name }} </div> </div></template>-------------------------------------------------export default { name: ’ProfilePage’, data() { return { // In a real app we would get this data from a server user: { name: ’John Smith’, profilePicture: ’./profile-pic.jpg’, emailAddress: ’john@smith.com’, twitterHandle: ’johnsmith’, instagram: ’johnsmith345’, }, } }};

我們的ProfilePage組件目前顯示用戶的配置文件圖片及其名稱,它還有用戶數(shù)據(jù)對(duì)象。

我們?nèi)绾螐母附M件(ProfilePage)向下獲取數(shù)據(jù)到子組件(ContactInfo)

我們必須使用 props 傳遞數(shù)據(jù)。

首先,我們需要將ContactInfo組件導(dǎo)入ProfilePage組件

// Import the componentimport ContactInfo from ’./ContactInfo.vue’;export default { name: ’ProfilePage’, // Add it as a dependency components: { ContactInfo, }, data() { return { user: { name: ’John Smith’, profilePicture: ’./profile-pic.jpg’, emailAddress: ’john@smith.com’, twitterHandle: ’johnsmith’, instagram: ’johnsmith345’, }, } }};

其次,我們必須在<template>中添加組件:

// ProfilePage<template> <div class='profile-page'> <div class='avatar'> <img src='http://m.b3g6.com/bcjs/user.profilePicture' /> {{ user.name }} </div> <!-- Add component in with props --> <contact-info :email-address='emailAddress' :twitter-handle='twitterHandle' :instagram='instagram' /> </div></template>

現(xiàn)在ContactInfo需要的所有用戶數(shù)據(jù)都將沿著組件樹(shù)向下流動(dòng),并從ProfilePage進(jìn)入ContactInfo。

我們將數(shù)據(jù)保存在ProfilePage而不是ContactInfo中的原因是ProfilePage頁(yè)面的其他部分需要訪問(wèn)user對(duì)象。

由于數(shù)據(jù)只向下流,這意味著我們必須將數(shù)據(jù)放在組件樹(shù)中足夠高的位置,以便它可以向下流到需要去的所有位置。

原文:https://medium.com/js-dojo/vue-data-flow-how-it-works-3ff316a7ffcd

PS:vue中把props中的值賦值給data

父組件:

<template> <div> <navbar :ctype='ctype'></navbar> </div></template><script>import navbar from ’@/components/navbar’ export default { components: {navbar}, data () { return{ ctype:1 } } }</script>

子組件:

<template> <div> <div>{{thistype}}</div> </div></template><script>export default { props:[’ctype’], computed: { normalizedSize: function () { return this.ctype.trim().toLowerCase() } }, data(){ return{ thistype:this.ctype } }}</script>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人午夜亚洲| 亚洲我射av| 国产精品国产三级在线观看| 成人台湾亚洲精品一区二区| 国产视频久久| 久久精品三级| 久久精品高清| 亚洲天堂一区二区| 国产一区二区三区成人欧美日韩在线观看| 爽好多水快深点欧美视频| 日韩精品永久网址| 日韩超碰人人爽人人做人人添| 国产韩日影视精品| 亚洲精品福利电影| 久久久久国产| 最新亚洲激情| 亚洲四虎影院| 亚洲va在线| 久久久精品久久久久久96| 欧美freesex黑人又粗又大| 久久午夜影院| 国产精品腿扒开做爽爽爽挤奶网站| 日韩成人亚洲| 日韩黄色大片| 国产亚洲永久域名| 四虎在线精品| 日韩av资源网| 老色鬼精品视频在线观看播放| 久久超碰99| 久久久久久色| 精品黄色一级片| 欧美成a人片免费观看久久五月天| 日本中文字幕不卡| 欧美天堂一区| 国产成人精选| 久久亚洲视频| 欧美亚洲三区| 久久久久观看| 五月激情久久| 日韩精品免费视频一区二区三区| 国产成年精品| 男女男精品视频网| 国产精品chinese| 国产高清一区二区| 国产精品激情电影| 99精品在线免费在线观看| 99视频精品免费观看| 欧美91在线| 久久亚洲美女| 99精品电影| 欧美日韩亚洲一区二区三区在线| 久久99青青| 日韩影院免费视频| 97国产成人高清在线观看| 天堂久久av| 亚洲午夜一级| 色偷偷色偷偷色偷偷在线视频| 视频一区二区中文字幕| 国产精品极品| 欧美日韩午夜| 亚洲久久一区| 蜜桃视频第一区免费观看| 久久婷婷久久| 中文字幕高清在线播放| 国产欧美久久一区二区三区| 国产亚洲在线| 久久精品123| 国产精品二区不卡| 久久精品999| 三级欧美在线一区| 亚洲一区成人| 久久在线视频免费观看| 日韩欧美一区二区三区免费观看| 麻豆国产精品一区二区三区| 日本免费一区二区视频| 亚洲免费婷婷| 国产精品毛片一区二区三区| 日韩午夜av在线| 日本精品不卡| 国产一区二区中文| 好吊日精品视频| 欧美一区三区| 99精品视频在线观看免费播放| 日本午夜免费一区二区 | 在线一区视频| 欧美/亚洲一区| 日韩欧美在线精品| 你懂的国产精品| 福利在线免费视频| 亚洲精品99| 91亚洲无吗| 久久永久免费| 精品91福利视频| 亚洲深夜av| 亚洲作爱视频| 国产精品tv| 999久久久精品国产| 日本国产亚洲| 99久久精品网| 亚洲人www| 麻豆精品在线播放| 亚洲欧美综合| 国产乱码精品| 宅男噜噜噜66国产日韩在线观看| 国产日韩三级| 欧美1级日本1级| 国产精品一卡| 日韩精品一二三| 群体交乱之放荡娇妻一区二区| 国产91在线精品| 亚洲精品少妇| 99精品在线观看| 欧美激情福利| 日韩一区中文| 久久人人精品| 国产亚洲一卡2卡3卡4卡新区| 欧美精品资源| 欧美a在线观看| 日韩三级一区| 久久久天天操| 国产精品嫩模av在线| 亚洲精品国产嫩草在线观看 | 久久不见久久见中文字幕免费| 免费国产自久久久久三四区久久| 国产欧美在线| 免费日本视频一区| 欧美日韩激情| 国产99在线| 国产一区二区三区不卡av| 欧美性www| 国产精品7m凸凹视频分类| 日韩高清不卡| 中文字幕成在线观看| 91亚洲国产高清| 日韩欧美二区| 成人自拍av| 色偷偷偷在线视频播放| 麻豆成人av在线| 国产精品美女久久久久久不卡| 亚洲精品在线a| 日韩av不卡一区二区| 国产亚洲欧美日韩精品一区二区三区| 亚洲精品888| 黄色亚洲免费| 午夜在线视频观看日韩17c| 三级欧美韩日大片在线看| 天堂俺去俺来也www久久婷婷| 日韩不卡一区二区| 免费看黄色91| 日韩在线成人| 精品久久一区| av在线日韩| 好看的亚洲午夜视频在线| 亚洲黄页一区| 久久不卡日韩美女| 日韩精品电影| 噜噜噜躁狠狠躁狠狠精品视频 | 日韩高清在线不卡| 日韩国产在线观看| 久久精品国产免费| 久久xxx视频| 日韩欧美一区二区三区免费观看| 精品中文在线| 中文在线一区| 精品国产欧美| 中文字幕免费一区二区| 精品国产乱码| 亚洲综合国产| 日韩精品免费一区二区夜夜嗨 | 天堂网av成人| 亚州精品视频| 日韩精品影视| 久久亚洲图片| 免费日韩视频| 欧美a一区二区| 日韩专区在线视频| 福利一区二区免费视频| 香蕉精品999视频一区二区| 久久av电影| 麻豆高清免费国产一区| 亚洲免费网址| 亚洲午夜天堂| 国产精品久久乐| 视频一区二区国产| 日韩网站中文字幕| 日本精品一区二区三区在线观看视频| 欧美亚洲福利| 视频一区二区三区中文字幕| 欧美a在线观看| 亚洲精品三级| 国产精品普通话对白| 精精国产xxxx视频在线播放 | 中文字幕亚洲影视| 日韩毛片视频| 最新中文字幕在线播放| 久久亚洲道色| 国产精品1luya在线播放| 免费视频最近日韩| 黑丝一区二区| 99综合视频|