vue props 單項(xiàng)數(shù)據(jù)流實(shí)例分享

父組件傳遞動(dòng)態(tài)值showStoreList,子組件通過props接收,但是如果在子組件中直接使用并修改這個(gè)值會(huì)報(bào)錯(cuò);
因?yàn)楦讣?jí)的更新會(huì)傳遞給子組件,但是反過來則不行;
這種情況下,可以使用computed或watch來獲取props中的值

以上實(shí)例不難,下面由腳本之家小編整理的補(bǔ)充內(nèi)容:
Vue2.x通過props傳遞數(shù)據(jù)是單向的了,也就是父組件數(shù)據(jù)變化時(shí)會(huì)傳遞給子組件,但是反過來不行。
業(yè)務(wù)中會(huì)經(jīng)常遇到兩種需要改變prop的情況,
一種是父組件傳遞初始值進(jìn)來,子組件將它作為初始值保存起來,在自己的作用域下可以隨意使用和修改。這種情況可以在組件data內(nèi)再聲明一個(gè)數(shù)據(jù),引用父組件的prop,示例代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="app">
<my-component :init-count="1"></my-component>
</div>
<script>
Vue.component('my-component',{
props:['init-count'],
template:'<div>{{count}}</div>',
data:function(){
return {
count:this.initCount
}
}
})
new Vue({
el:'#app',
})
</script>
</body>
</html>
組件中聲明了數(shù)據(jù)count,它在組件初始化時(shí)會(huì)獲取來自父組件的initCount,之后就與之無關(guān)了,只用維護(hù)count,這樣就可以避免直接操作initCount。
另一種情況就是prop作為需要被轉(zhuǎn)變的原始值傳入。這種情況用計(jì)算屬性就可以了,示例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./vue.js"></script>
</head>
<body>
<div id="app">
<mynew-component :width="100"></mynew-component>
</div>
<script>
Vue.component('mynew-component',{
props:['width'],
template:'<div :style="style">組件內(nèi)容</div>',
computed:{
style:function(){
return {
width:this.width+'px',
background:'lightgray',
textAlign:'center'
}
}
}
})
new Vue({
el:'#app',
})
</script>
</body>
</html>
注意:
在JavaScript中對(duì)象和數(shù)組是引用類型,指向同一個(gè)內(nèi)存空間,所以props是對(duì)象和數(shù)組時(shí),在子組件內(nèi)改變是會(huì)影響父組件的。
//如此解決引用傳遞
1:var newObject = jQuery.extend(true, {}, oldObject);
2:var obj={};
obj=JSON.parse(JSON.stringify(oldObject));
以上就是本次介紹地全部相關(guān)知識(shí)點(diǎn),感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
相關(guān)文章
Vue3+TypeScript+Vite使用require動(dòng)態(tài)引入圖片等靜態(tài)資源
本文主要介紹了Vue3+TypeScript+Vite使用require動(dòng)態(tài)引入圖片等靜態(tài)資源,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
淺談vue3中effect與computed的親密關(guān)系
這篇文章主要介紹了淺談vue3中effect與computed的親密關(guān)系,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
解讀Vue3中keep-alive和動(dòng)態(tài)組件的實(shí)現(xiàn)邏輯
這篇文章主要介紹了Vue3中keep-alive和動(dòng)態(tài)組件的實(shí)現(xiàn)邏輯,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Vue實(shí)現(xiàn)內(nèi)部組件輪播切換效果的示例代碼
這篇文章主要介紹了Vue實(shí)現(xiàn)內(nèi)部組件輪播切換效果的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
vue靜態(tài)配置文件不進(jìn)行編譯的處理過程(在public中引入js)
這篇文章主要介紹了vue靜態(tài)配置文件不進(jìn)行編譯的處理過程(在public中引入js),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

