精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue 3 學習筆記—Provide 和 Inject 用法及原理

開發 前端
在父子組件傳遞數據時,通常使用的是 props 和 emit,父傳子時,使用的是 props,如果是父組件傳孫組件時,就需要先傳給子組件,子組件再傳給孫組件。

[[439473]]

在父子組件傳遞數據時,通常使用的是 props 和 emit,父傳子時,使用的是 props,如果是父組件傳孫組件時,就需要先傳給子組件,子組件再傳給孫組件,如果多個子組件或多個孫組件使用時,就需要傳很多次,會很麻煩。

像這種情況,可以使用 provide 和 inject 解決這種問題,不論組件嵌套多深,父組件都可以為所有子組件或孫組件提供數據,父組件使用 provide 提供數據,子組件或孫組件 inject 注入數據。同時兄弟組件之間傳值更方便。

一、Vue2 的 provide / inject 使用

provide :是一個對象,里面是屬性和值。如:

  1. provide:{ 
  2.  info:"值" 

 如果 provide 需要使用 data 內的數據時,這樣寫就會報錯。訪問組件實例 property 時,需要將 provide 轉換為返回對象的函數。

  1. provide(){ 
  2.  return
  3.   info: this.msg 
  4.  } 

 inject :是一個字符串數組。如:

  1. inject: [ 'info' ] 

接收上邊 provide 提供的 info 數據,也可以是一個對象,該對象包含 from 和 default 屬性,from 是可用做的注入內容中搜索用的 key,default 屬性是指定默認值。

在 vue2 中 project / inject 應用:

  1. //父組件 
  2. export default
  3.  provide:{ 
  4.   info:"提供數據" 
  5.  } 
  6. //子組件 
  7. export default
  8.  inject:['info'], 
  9.  mounted(){ 
  10.     console.log("接收數據:", this.info) // 接收數據:提供數據 
  11.  } 
  12. }  

 provide / inject 類似于消息的訂閱和發布。provide 提供或發送數據, inject 接收數據。

二、Vue3 的 provide / inject 使用

在組合式 API 中使用 provide/inject,兩個只能在 setup 期間調用,使用之前,必須從 vue 顯示導入 provide/inject 方法。

provide 函數接收兩個參數:

provide( name,value )

name:定義提供 property 的 name 。

value :property 的值。

使用時:

  1. import { provide } from "vue" 
  2. export default { 
  3.   setup(){ 
  4.     provide('info',"值"
  5.   } 

 inject 函數有兩個參數:

inject(name,default)

name:接收 provide 提供的屬性名。

default:設置默認值,可以不寫,是可選參數。

使用時:

  1. import { inject } from "vue" 
  2. export default { 
  3.   setup(){ 
  4.     inject('info',"設置默認值"
  5.   } 

 完整實例1:provide/inject實例

  1. //父組件代碼 
  2. <script> 
  3. import { provide } from "vue" 
  4. export default { 
  5.   setup(){ 
  6.     provide('info',"值"
  7.   } 
  8. </script> 
  9.  
  10. //子組件 代碼 
  11. <template> 
  12.  {{info}} 
  13. </template> 
  14. <script> 
  15. import { inject } from "vue" 
  16. export default { 
  17.   setup(){ 
  18.     const info = inject('info'
  19.     return
  20.       info 
  21.     } 
  22.   } 
  23. </script>  

三、添加響應性

為了給 provide/inject 添加響應性,使用 ref 或 reactive 。

完整實例2:provide/inject 響應式

  1. //父組件代碼 
  2. <template> 
  3.   <div> 
  4.     info:{{info}} 
  5.     <InjectCom ></InjectCom> 
  6.   </div> 
  7. </template> 
  8. <script> 
  9. import InjectCom from "./InjectCom" 
  10. import { provide,readonly,ref } from "vue" 
  11. export default { 
  12.   setup(){ 
  13.     let info = ref("今天你學習了嗎?"
  14.     setTimeout(()=>{ 
  15.       info.value = "不找借口,立馬學習" 
  16.     },2000) 
  17.     provide('info',info) 
  18.     return
  19.       info 
  20.     } 
  21.   }, 
  22.   components:{ 
  23.     InjectCom 
  24.   } 
  25. </script> 
  26.  
  27. // InjectCom 子組件代碼 
  28. <template> 
  29.  {{info}} 
  30. </template> 
  31. <script> 
  32. import { inject } from "vue" 
  33. export default { 
  34.   setup(){ 
  35.     const info = inject('info'
  36.     setTimeout(()=>{ 
  37.       info.value = "更新" 
  38.     },2000) 
  39.     return
  40.       info 
  41.     } 
  42.   } 
  43. </script> 

上述示例,在父組件或子組件都會修改 info 的值。

provide / inject 類似于消息的訂閱和發布,遵循 vue 當中的單項數據流,什么意思呢?就是數據在哪,修改只能在哪,不能在數據傳遞處修改數據,容易造成狀態不可預測。

在訂閱組件內修改值的時候,可以被正常修改,如果其他組件也使用該值的時候,狀態容易造成混亂,所以需要在源頭上規避問題。

readonly 只讀函數,使用之前需要引入,如果給變量加上 readonly 屬性,則該數據只能讀取,無法改變,被修改時會發出警告,但不會改變值。

使用方法:

  1. import { readonly } from "vue" 
  2. let info = readonly('只讀info值'
  3. setTimout(()=>{ 
  4.  info="更新info" //兩秒后更新info的值 
  5. },2000) 

 運行兩秒后,瀏覽器發出警告,提示 info 值不可修改。

所以我們就給provide發射出去的數據,添加一個只讀屬性,避免發射出去的數據被修改。

完整實例2的 provide 處添加 readonly 。

  1. provide('info', readonly(info)) 

在子組件修改值的時候,會有一個只讀提醒。

修改值的時候,還是需要在 provide 發布數據的組件內修改數據,所以會在組件內添加修改方法,同時也發布出去,在子組件處調用就可以了。如:

  1. //發布 
  2. let info = ref("今天你學習了嗎?"
  3. const changeInfo = (val)=>{ 
  4.  info.value = val 
  5. provide('info',readonly(info)) 
  6. provide('changeInfo',changeInfo) 
  7.  
  8. //訂閱 
  9. const chang = inject('changeInfo'
  10. chang('沖向前端工程師'

 完整示例3:修改數據

  1. // 父組件代碼 
  2. <template> 
  3.   <div> 
  4.     info:{{info}} 
  5.     <InjectCom ></InjectCom> 
  6.   </div> 
  7. </template> 
  8.  
  9. <script> 
  10. import InjectCom from "./InjectCom" 
  11. import { provide,readonly,ref } from "vue" 
  12. export default { 
  13.   setup(){ 
  14.     let info = ref("今天你學習了嗎?"
  15.     const changeInfo = (val)=>{ 
  16.       info.value = val 
  17.     } 
  18.     provide('info',readonly(info)) 
  19.     provide('changeInfo',changeInfo) 
  20.     return
  21.       info 
  22.     } 
  23.   }, 
  24.   components:{ 
  25.     InjectCom 
  26.   } 
  27. </script> 
  28.  
  29. //InjectCom 子組件代碼 
  30. <template> 
  31.   <div> 
  32.     <button @click="chang('沖向前端工程師')">更新值</button> 
  33.   </div> 
  34. </template> 
  35. <script> 
  36. import { inject } from "vue" 
  37. export default { 
  38.   setup(){ 
  39.     const info = inject('info'
  40.     const chang = inject('changeInfo'
  41.     return
  42.       info, 
  43.       chang 
  44.     } 
  45.   } 
  46. </script> 

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-05-27 10:36:34

ProvideInjectVue3

2024-12-03 10:40:51

Vue3injectprovide

2021-12-01 08:11:44

Vue3 插件Vue應用

2021-12-07 05:44:45

Vue 3 Watch WatchEffect

2021-12-08 09:09:33

Vue 3 Computed Vue2

2023-11-29 08:49:31

Vue.jsData 函數

2023-11-28 09:03:59

Vue.jsJavaScript

2024-11-11 06:00:00

Vue開發provide

2020-06-09 11:35:30

Vue 3響應式前端

2021-11-16 08:50:29

Vue3 插件Vue應用

2021-11-30 08:19:43

Vue3 插件Vue應用

2020-12-01 08:34:31

Vue3組件實踐

2021-12-29 07:51:21

Vue3 插件Vue應用

2021-12-02 05:50:35

Vue3 插件Vue應用

2023-12-11 07:34:37

Computed計算屬性Vue3

2024-04-10 08:45:51

Vue 3Proxy對象監測數據

2010-08-26 16:40:35

DIV定位

2010-08-16 15:11:02

DIV

2010-09-14 16:20:19

DIV定位

2021-11-17 08:24:47

Vue3 插件Vue應用
點贊
收藏

51CTO技術棧公眾號

国产日韩欧美电影在线观看| 国产丝袜一区视频在线观看| 国产在线观看欧美| 人妻少妇精品无码专区久久| 久久国产88| 日韩在线观看网站| 亚洲成人在线视频播放| 欧美一区免费视频| 国产强伦人妻毛片| 久久av一区| 久久天天躁日日躁| 性少妇bbw张开| 日韩区欧美区| 欧美午夜影院一区| 国产男女免费视频| 2024短剧网剧在线观看| 国产亚洲污的网站| 国产经典一区二区三区| 一二三四区视频| 国产一区白浆| 久久99亚洲精品| 成人性视频免费看| 亚洲+小说+欧美+激情+另类| 精品欧美乱码久久久久久| 亚洲最大综合网| 欧洲一区精品| 亚洲一区在线看| 色撸撸在线观看| 国产黄在线看| 久久精品免费在线观看| 精品一区日韩成人| 亚洲黄色在线观看视频| 国内成人精品2018免费看| 国产成人在线视频| 亚洲欧美综合自拍| 亚洲精品乱码| 国模视频一区二区| 丰满少妇高潮久久三区| 9191国语精品高清在线| 日韩一区视频在线| 国产破处视频在线观看| 精品国产网站| 一个人看的www久久| 成人性生交大免费看| 成人资源在线| 亚洲精品一区二区三区99| a级大片免费看| 国产视频一区二| 欧美一区二区视频免费观看| 亚洲理论中文字幕| 国产女优在线播放| 综合久久2019| 国产精品高清亚洲| 影音先锋在线亚洲| 日本高清视频在线播放| 中文字幕乱码日本亚洲一区二区 | 精品91福利视频| 欧美日韩国产高清一区二区三区 | 中文字幕人妻一区二区三区视频 | 综合激情网站| 欧美巨乳美女视频| 免费中文字幕视频| 欧美视频四区| 性视频1819p久久| 国产精品黄色大片| 肉丝袜脚交视频一区二区| 国产成人精品优优av| 黄色污污视频软件| 蜜臀av一区二区| 91老司机在线| 日韩在线观看视频一区| 久久夜色精品国产噜噜av| 日本亚洲导航| 高h视频在线观看| 亚洲线精品一区二区三区八戒| 妞干网视频在线观看| 亚洲女同志freevdieo| 色伊人久久综合中文字幕| 青青草精品视频在线观看| 亚洲免费一区| 亚洲第一区在线| 精品人妻互换一区二区三区| 久久亚洲精品中文字幕蜜潮电影| 超碰精品一区二区三区乱码| 国产精品第108页| 日本欧美一区二区在线观看| 91免费视频国产| 亚洲三区在线播放| 国产精品乱人伦| av在线免费观看国产| 免费观看欧美大片| 91精品视频网| 一级性生活大片| 久久久久久美女精品| 午夜精品久久久久久久99热| 成人在线免费观看视频网站| 在线播放一级片| 成人免费视频播放| 亚洲国产一区二区三区在线播| www免费在线观看| 精品久久中文字幕| 中文字幕精品一区二区三区在线| 国产精品1luya在线播放| 一区二区三区国产在线观看| 久久成人在线观看| 日本大胆欧美人术艺术动态| 3d动漫精品啪啪一区二区三区免费 | 日韩欧美国产精品| www.av天天| 黄色在线一区| 成人天堂噜噜噜| 激情综合闲人网| 亚洲成人激情自拍| 九九久久久久久| 日本成人小视频| 欧美在线观看网址综合| jizz中国少妇| 国产精品国产三级国产a| 91猫先生在线| 91蝌蚪精品视频| 久久精品久久久久电影| 国产精品视频一区在线观看| 夫妻av一区二区| 国产高清免费在线| 久久av日韩| 亚洲视屏在线播放| 精品国产免费观看| 国产精品12区| 一区二区三区一级片| 亚洲精品.com| 亚洲老头同性xxxxx| 国产无遮挡裸体免费视频| 国产一区二区三区免费| 亚洲一区二区三区涩| 成人性教育av免费网址| 日韩av在线免费观看一区| 国产在线拍揄自揄拍| 国产高清不卡二三区| 午夜啪啪免费视频| 四虎影视国产精品| 久久精品一偷一偷国产| 日本在线观看网址| av女名字大全列表| 亚洲国产欧美另类丝袜| 精品国产免费久久久久久婷婷| 亚州av乱码久久精品蜜桃| 国产日韩欧美成人| 男人影院在线观看| 欧美精品tushy高清| 亚洲AV成人无码网站天堂久久| 日韩vs国产vs欧美| 日韩精品极品视频在线观看免费| 美女福利一区二区| 在线播放日韩精品| 国产乱码精品一区二三区蜜臂| 国产精品久久久久久久蜜臀| 天堂网在线免费观看| 99久久99热这里只有精品| 91日韩在线播放| 欧美人与性动交α欧美精品济南到| 91精品国产丝袜白色高跟鞋| 国产av无码专区亚洲av毛网站| 国产成人免费xxxxxxxx| 五月丁香综合缴情六月小说| 日韩深夜福利| 国产成人精品日本亚洲专区61| 中文字幕在线观看日本| 91精品国产91久久综合桃花| 日韩欧美中文字幕视频| 成人国产免费视频| 国产麻花豆剧传媒精品mv在线| 波多野结衣在线观看一区二区三区| 国产精品日韩专区| 日本在线视频www鲁啊鲁| 精品视频—区二区三区免费| 免费看av在线| 一区二区三区产品免费精品久久75| 中文字幕在线永久| 日本欧美韩国一区三区| 一本色道久久88亚洲精品综合| 麻豆一区一区三区四区| 国产精品国产三级国产专播精品人 | 国产精品一区免费视频| 欧美视频在线播放一区| 日韩在线综合| 国产一区二区免费电影| 少妇精品视频一区二区免费看| 欧美成人精品在线观看| 天天摸夜夜添狠狠添婷婷| 欧美性xxxxxxxx| 九九视频在线观看| 国产免费成人在线视频| 又黄又爽又色的视频| 亚洲一区亚洲| 亚洲视频在线视频| aa在线免费观看| 欧美丝袜一区| 国产精品美女诱惑| 欧美黄页免费| 欧美一二三视频| 成人在线免费看片| 亚洲日本欧美日韩高观看| 精品国精品国产自在久不卡| 日韩欧美国产视频| 欧美人妻精品一区二区三区| 国产日韩欧美电影| 国产精品九九视频| 国产精品中文有码| 亚洲国产精品三区| 一区二区久久| 99亚洲国产精品| 欧美中文一区二区| 欧美久久久久久| 草莓视频一区二区三区| 国产在线视频2019最新视频| 校园春色亚洲色图| 91精品国产91久久久久久吃药 | 亚洲最大的成人av| 女人裸体性做爰全过| 久久青草国产手机看片福利盒子| 无码人妻少妇色欲av一区二区| 青娱乐精品视频在线| 黄色片久久久久| 红桃视频亚洲| 神马午夜伦理影院| 希岛爱理一区二区三区| 色播亚洲视频在线观看| 最新亚洲精品| 噜噜噜噜噜久久久久久91| 国产精品色在线网站| 99伊人久久| 欧美高清一级片| 成人一区二区电影| 999久久久国产999久久久| 国产这里只有精品| 日韩亚洲国产免费| 国产日韩欧美影视| 亚洲图片小说区| 成人av在线天堂| 色8久久久久| 国产欧美 在线欧美| 欧美成人app| 国产精品女视频| jizzjizz少妇亚洲水多| 国产欧美日韩精品在线观看| 成人h在线观看| 国产精品欧美一区二区三区奶水 | 欧美日韩久久久| jizz国产在线| 久久亚洲电影| 久久人人爽人人| 日本欧美电影在线观看| 欧美激情视频三区| av资源在线播放| 欧美中文字幕在线播放| 超碰一区二区| 国产精国产精品| 国产精品亚洲成在人线| 成人国产精品一区| 一区二区三区四区高清视频| 91九色露脸| 国产毛片久久久| 免费在线成人av| 成人嫩草影院| 91看片淫黄大片91| 最新成人av网站| 日韩精品一区二区三区不卡| 麻豆精品一区二区| av影片在线播放| 91色porny在线视频| 山东少妇露脸刺激对白在线| 国产精品久久久一本精品| 国产精品久久久精品四季影院| 樱桃视频在线观看一区| 五月婷婷亚洲综合| 精品视频1区2区| 亚洲狼人综合网| 亚洲香蕉成视频在线观看| 日本在线免费网| 国语自产精品视频在线看一大j8| 自由日本语热亚洲人| 91精品久久久久久久久青青 | 青青青在线免费观看| 天天综合网天天综合色| 中文字幕 欧美激情| 欧美xxxxx牲另类人与| 深夜影院在线观看| 久久好看免费视频| 三级在线观看视频| 国产日韩中文在线| 狼人天天伊人久久| 一区二区三区电影| 国产精品日本| www.色.com| 久久精品亚洲一区二区三区浴池 | 久久无码人妻精品一区二区三区| 欧美经典一区二区三区| 亚洲国产精品久| 色婷婷国产精品| 精品人妻一区二区三区换脸明星| 亚洲男女性事视频| 男男gaygays亚洲| 成人福利在线观看| 一道本一区二区三区| 国产一级大片免费看| 青椒成人免费视频| 国产精品无码毛片| 一区二区免费在线| 6—12呦国产精品| 免费成人性网站| 真人做人试看60分钟免费| 日韩经典一区二区| 亚洲欧美在线不卡| 亚洲综合网站在线观看| 国产精品国产一区二区三区四区| 日韩精品中文字幕有码专区| 欧美寡妇性猛交xxx免费| 国产日韩换脸av一区在线观看| 亚洲精品播放| 免费国产黄色网址| 丁香六月综合激情| 91精品国产高清一区二区三蜜臀| 欧美日韩专区在线| 福利片在线看| 国产精品99久久99久久久二8| 久久精品国产亚洲5555| www.夜夜爱| 国产精品亚洲а∨天堂免在线| 黄色片网站在线播放| 欧美综合天天夜夜久久| 欧美午夜黄色| 2023亚洲男人天堂| 日本妇女一区| 亚洲 欧美 日韩 国产综合 在线| 国产aⅴ综合色| 久久高清无码视频| 精品免费视频一区二区| 日韩电影免费观看| 国产高清一区视频| 狠狠久久婷婷| 制服丝袜在线第一页| 亚洲一区二区免费视频| 人人妻人人澡人人爽精品日本 | 性欧美videosex高清少妇| 久久都是精品| 欧洲美熟女乱又伦| 欧美三级中文字幕在线观看| 1769在线观看| 91精品免费看| 欧美韩国一区| 中国男女全黄大片| 亚洲大尺度视频在线观看| 少妇喷水在线观看| 8x拔播拔播x8国产精品| 免费成人结看片| 五月婷婷深爱五月| 国产精品初高中害羞小美女文| 伊人精品在线视频| 久久精品国产69国产精品亚洲 | 美女视频网站久久| 污污的视频在线免费观看| 日韩视频免费直播| 不卡一本毛片| 美媛馆国产精品一区二区| 日韩激情视频网站| 中文字幕av播放| 精品成人一区二区三区四区| 亚洲少妇视频| 综合国产精品久久久| 国产成人在线色| 亚洲精品77777| 一本大道久久加勒比香蕉| 高清一区二区中文字幕| 日韩黄色短视频| 久久精品亚洲乱码伦伦中文| 91成品人影院| 久久免费观看视频| blacked蜜桃精品一区| 992kp免费看片| 欧美高清视频看片在线观看| av一本久道久久波多野结衣| 亚洲专区免费| 91麻豆精品成人一区二区| 亚洲成人动漫在线播放| 成人看片网站| 日韩精品一区二区免费| 国产女人18水真多18精品一级做| 91影院在线播放| 性色av一区二区咪爱| 欧美成人自拍| 在线观看国产三级| 日韩一区二区精品葵司在线| a日韩av网址| 成人在线免费观看视频网站| 久久精品在线观看| 亚洲av无码一区二区乱子伦| 日韩av电影在线播放| 欧美三区不卡| 国产3级在线观看| 精品夜色国产国偷在线|