最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端框架Vue父子組件數(shù)據(jù)雙向綁定的實(shí)現(xiàn)

 更新時(shí)間:2021年09月13日 15:23:05   作者:前端人  
Vue項(xiàng)目中經(jīng)常使用到組件之間的數(shù)值傳遞,實(shí)現(xiàn)的方法很多,但是原理上基本大同小異。這篇文章將給大家介紹Vue 父子組件數(shù)據(jù)單向綁定與Vue 父子組件數(shù)據(jù)雙向綁定的對(duì)比從而認(rèn)識(shí)雙向綁定

實(shí)現(xiàn)思路:

父 向 子 組件傳值:使用 props 屬性。( props property[屬性] 的復(fù)數(shù)簡(jiǎn)寫(xiě) )
子 向 父 組件傳值:使用自定義事件。

一、父子組件單向傳值

1、父向子傳值

父向子組件傳值,子組件接收到數(shù)據(jù)之后,保存到自己的變量中。

//父組件寫(xiě)法 
<cld :numP="num" ></cld> 
 
//子組件定義以及數(shù)據(jù) 
components:{ 
 cld:{ 
  template:'#child', 
  props:{ 
   numP:Number 
  }, 
 } 
} 
 
//子組件內(nèi)容 
<template id="child"> 
 <div> 
  {{ numP }} 
 </div> 
</template> 


props 用于接收父組件傳過(guò)來(lái)的值,props 的寫(xiě)法有很多種,具體如:

//方式1 :  直接接收數(shù)據(jù) 
props: [ 'numP' ] 
 
//方式2: 加類型限制 
props: [ 
 numP: Number 
 ]  
 
//方式3:添加默認(rèn)值 
props: [ 
 numP: { 
  type:Number, 
  default:0 
  } 
]  
 
//方式4:是否必須值限制 
props: [ 
 numP: { 
  type:Number, 
  default:0, 
  require:true //添加必須值,不傳此值會(huì)報(bào)錯(cuò) 
 } 
]  
 
//方式5:采用對(duì)象形式 
props: { 
 numP: { 
  type:Number, 
  default:0, 
 } 
} 

2、子向父?jìng)髦?/h3>

子向父組件傳值,主要通過(guò)自定義事件進(jìn)行傳值,具體實(shí)例如下:

// 父組件內(nèi)容 
<div> 
 子組件獲取到的數(shù)據(jù){{getNum}} 
 <cld :numb="num" @accept="getNumC"></cld> 
</div> 
 
//父組件方法 
methods:{ 
 getNumC(data){ 
  this.getNum = data //接收子組件傳的數(shù)據(jù) 
 } 
}, 
//子組件定義 
components:{ 
 cld:{ 
  template:'#child', 
  data(){ 
   return{ 
    numC:1314 //子組件數(shù)據(jù)定義 
   } 
  }, 
  mounted(){ 
    this.$emit( 'accept' , this.numC ) // 觸發(fā)自定義事件 
   } 
  } 
}, 

二、父子組件數(shù)據(jù)雙向綁定

Vue 的數(shù)據(jù)都是單向流動(dòng)的,而且 vue 中從來(lái)就沒(méi)有任何的雙向綁定,v-model 實(shí)現(xiàn)的雙向綁定只是語(yǔ)法糖而已。

方式1:利用 watch 實(shí)現(xiàn)父子組件的數(shù)據(jù)雙向綁定,具體實(shí)例如下:

<div id="app"> 
 數(shù)據(jù)<br>{{num}} 
 <input type="text" v-model="num"><br> 
 <cld :numb="num" @accept="getNumC"></cld> 
</div> 
//子組件內(nèi)容 
<template id="child"> 
 <div> 
  數(shù)據(jù)<br>{{childNum}} 
  <input type="text" v-model="childNum" /> 
 </div> 
</template> 
 
  <!-- 父子組件通信 --> 
const app = new Vue({ 
 el:'#app', 
  data:{ 
   num:'520', 
   }, 
  methods:{ 
   getNumC(data){ 
    this.num = data 
   } 
  }, 
  components:{ 
   cld:{ 
    template:'#child', 
    props:{ 
     numb:String 
    }, 
   data(){ 
    return{ 
     childNum:0, 
    } 
   }, 
  watch:{ 
   numb:function(){ 
    this.childNum = this.numb 
   }, 
   childNum:function(){ 
    this.$emit('accept',this.childNum) 
    } 
   }, 
  mounted(){ 
   this.childNum = this.numb 
   } 
  } 
 }  
}) 


方式2:.sync 修飾符實(shí)現(xiàn)雙向綁定

在vue 1.x 中的 .sync 修飾符所提供的功能。當(dāng)一個(gè)子組件改變了一個(gè)帶 .sync 的 prop 的值時(shí),這個(gè)變化也會(huì)同步到父組件中所綁定的值。這很方便,但也會(huì)導(dǎo)致問(wèn)題,因?yàn)樗茐牧藛蜗驍?shù)據(jù)流。(數(shù)據(jù)自上而下流,事件自下而上走)

<cld :numb.sync="num" ></cld> 
//會(huì)擴(kuò)展為: 
<cld  :numb="bar"  @update:numb=”val => bar = val”/> 


當(dāng)組件需要更新 numb 的值時(shí),需要觸發(fā)更新事件:

this.$emit("update:numb", newValue ); 


使用具體實(shí)例如下:

// 父組件 
<Father :foo.sync="foo"></Father> 
 
//子組件 
props: ['foo'], 
data() { 
  return { 
   newFoo: this.foo; 
   } 
}, 
methods:{ 
 add:function(){ 
  this.newMsg=10; 
  this.$emit('update:foo',this.newFoo); 
 } 
} 

到此這篇關(guān)于前端框架Vue 父子組件數(shù)據(jù)雙向綁定的文章就介紹到這了,更多相關(guān)Vue 父子組件數(shù)據(jù)雙向綁定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3中vite.config.js相關(guān)常用配置超詳細(xì)講解

    vue3中vite.config.js相關(guān)常用配置超詳細(xì)講解

    在Vue3項(xiàng)目中vite.config.js文件是Vite構(gòu)建工具的配置文件,它用于定義項(xiàng)目的構(gòu)建和開(kāi)發(fā)選項(xiàng),這篇文章主要介紹了vue3中vite.config.js相關(guān)常用配置的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • 關(guān)于ELement?UI時(shí)間控件el-date-picker誤差8小時(shí)的問(wèn)題

    關(guān)于ELement?UI時(shí)間控件el-date-picker誤差8小時(shí)的問(wèn)題

    本文探討了在使用Vue前端框架配合ElementUI開(kāi)發(fā)時(shí),遇到日期時(shí)間選擇器DateTimePicker的時(shí)間同步問(wèn)題,通過(guò)揭示中國(guó)東八區(qū)與格林威治時(shí)間的時(shí)差,作者提供了設(shè)置value-format屬性的解決方案,以確保后端接收到的正確時(shí)間格式
    2024-08-08
  • vue項(xiàng)目中使用百度地圖的方法

    vue項(xiàng)目中使用百度地圖的方法

    這篇文章主要介紹了在vue項(xiàng)目中使用百度地圖的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 一文快速詳解前端框架 Vue 最強(qiáng)大的功能

    一文快速詳解前端框架 Vue 最強(qiáng)大的功能

    組件是 vue.js最強(qiáng)大的功能之一,而組件實(shí)例的作用域是相互獨(dú)立的,這就意味著不同組件之間的數(shù)據(jù)無(wú)法相互引用。這篇文章主要介紹了一文快速詳解前端框架 Vue 最強(qiáng)大的功能,需要的朋友可以參考下
    2019-05-05
  • 解決vue中修改export default中腳本報(bào)一大堆錯(cuò)的問(wèn)題

    解決vue中修改export default中腳本報(bào)一大堆錯(cuò)的問(wèn)題

    今天小編就為大家分享一篇解決vue中修改export default中腳本報(bào)一大堆錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • vue內(nèi)置組件transition簡(jiǎn)單原理圖文詳解(小結(jié))

    vue內(nèi)置組件transition簡(jiǎn)單原理圖文詳解(小結(jié))

    這篇文章主要介紹了vue內(nèi)置組件transition簡(jiǎn)單原理圖文詳解(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • vue3頁(yè)面query參數(shù)變化并重新加載頁(yè)面數(shù)據(jù)方式

    vue3頁(yè)面query參數(shù)變化并重新加載頁(yè)面數(shù)據(jù)方式

    在Web開(kāi)發(fā)中,頁(yè)面間的跳轉(zhuǎn)及數(shù)據(jù)刷新是常見(jiàn)問(wèn)題,通過(guò)使用$router.push和$router.replace方法,可以控制頁(yè)面跳轉(zhuǎn)的行為,具體操作時(shí),若發(fā)現(xiàn)頁(yè)面ID變更后數(shù)據(jù)未刷新,可通過(guò)給router-view標(biāo)簽添加key值解決,若使用keep-alive
    2024-10-10
  • Vue 實(shí)現(xiàn)CLI 3.0 + momentjs + lodash打包時(shí)優(yōu)化

    Vue 實(shí)現(xiàn)CLI 3.0 + momentjs + lodash打包時(shí)優(yōu)化

    今天小編就為大家分享一篇Vue 實(shí)現(xiàn)CLI 3.0 + momentjs + lodash打包時(shí)優(yōu)化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • html中引入Vue.js的cdn實(shí)現(xiàn)簡(jiǎn)單的文檔單頁(yè)

    html中引入Vue.js的cdn實(shí)現(xiàn)簡(jiǎn)單的文檔單頁(yè)

    這篇文章主要為大家介紹了html中引入Vue.js的cdn實(shí)現(xiàn)簡(jiǎn)單的文檔單頁(yè)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Vue的兼容性解決方案Babel-polyfill案例解析

    Vue的兼容性解決方案Babel-polyfill案例解析

    這篇文章主要介紹了Vue的兼容性解決方案Babel-polyfill的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11

最新評(píng)論

古丈县| 淮滨县| 宜章县| 昌江| 盘山县| 彭阳县| 扎兰屯市| 大冶市| 环江| 灌云县| 西林县| 富民县| 观塘区| 平山县| 神池县| 德化县| 五原县| 长治市| 江川县| 龙山县| 青冈县| 诸暨市| 昆山市| 肃宁县| 宁国市| 巴彦淖尔市| 淮滨县| 屏边| 宕昌县| 保康县| 清水河县| 广宗县| 通榆县| 临城县| 大城县| 沛县| 全州县| 涞水县| 黔西| 庆安县| 和林格尔县|