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

Vue3之父子組件異步props數(shù)據(jù)的傳值方式

 更新時(shí)間:2025年04月09日 09:48:26   作者:杰迷不寫(xiě)bug  
這篇文章主要介紹了Vue3之父子組件異步props數(shù)據(jù)的傳值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Vue3父子組件異步props數(shù)據(jù)的傳值

在寫(xiě)前端頁(yè)面時(shí)碰到一個(gè)問(wèn)題,就是點(diǎn)擊編輯按鈕傳遞這一行信息給子組件編輯頁(yè),展示該條數(shù)據(jù)詳細(xì)數(shù)據(jù);

但還沒(méi)有點(diǎn)擊編輯按鈕,其實(shí)編輯頁(yè)已經(jīng)初始化了,是因?yàn)樵诟附M件中已經(jīng)導(dǎo)入使用了該編輯頁(yè);

例如:在 Editor.vue中有這樣代碼:

let prop = defineProps(["dataInfo"])
console.log(prop.dataInfo);

進(jìn)入首頁(yè)時(shí)控制臺(tái)已經(jīng)運(yùn)行了這段代碼console.log(prop.dataInfo) 并且為空對(duì)象;

但是子組件并沒(méi)有接收到父組件的數(shù)據(jù);

原因

是因?yàn)槿绻附M件的props值是通過(guò)異步操作獲取的,那么在最初渲染子組件時(shí),props可能還沒(méi)有被賦值。而我正是使用異步操作把值通過(guò)props傳給子組件的;

代碼如下:

在父組件一個(gè)函數(shù)中給dataInfo賦值:

// 子組件標(biāo)簽
<Editor :dataInfo="dataInfo" ref="EditorRef" @refresh="funFindItemInfo" />

   
let EditorRef = ref()
let dataInfo = ref({}) //傳遞給編輯頁(yè)的數(shù)據(jù)
//編輯按鈕
function handlEditor(row) {
  dataInfo.value = row;  // 信息傳遞到組件
  EditorRef.value.openEditor()  //打開(kāi)對(duì)話框

}

解決方案

這種情況下,可以使用watchEffectwatch來(lái)監(jiān)聽(tīng)props的變化,確保當(dāng)props值變化時(shí)能作出相應(yīng)的處理。

小結(jié):Vue 3中props的值在組件實(shí)例創(chuàng)建初期就被初始化并傳遞給子組件,并且在組件的整個(gè)生命周期內(nèi),只要父組件的props數(shù)據(jù)發(fā)生變化,就會(huì)觸發(fā)子組件的相應(yīng)更新。

總代碼如下:

  • 父組件:
// 子組件標(biāo)簽
<Editor :dataInfo="dataInfo" ref="EditorRef" @refresh="funFindItemInfo" />

   
let EditorRef = ref()
let dataInfo = ref({}) //傳遞給編輯頁(yè)的數(shù)據(jù)
//編輯按鈕
function handlEditor(row) {
  dataInfo.value = row;  // 信息傳遞到組件
  EditorRef.value.openEditor()  //打開(kāi)對(duì)話框

}
  • 子組件:
// 標(biāo)簽:
   <el-form-item label="ID">
      <el-input v-model="ItemFormData.id" disabled></el-input>
  </el-form-item>
  <el-form-item label="名字">
      <el-input v-model="ItemFormData.name"></el-input>
  </el-form-item>
  ........


let prop = defineProps(["dataInfo"])
const emit = defineEmits(["refresh"])
let isDialog = ref(false)  // 是否拉開(kāi)抽屜
let ItemFormData = ref({}) // 數(shù)據(jù)對(duì)象
defineExpose({
  // 對(duì)外暴露控制拉開(kāi)抽屜的方法
  openEditor() {
    isDialog.value = true
  },
});


watch(()=>prop.dataInfo,(newVal,oldVal)=>{
        console.log("新值:",newVal);
        console.log("舊值:",oldVal);
        let {id,name,price,detail,pic,address,createtime} = prop.dataInfo //解構(gòu) 切斷響應(yīng)
        ItemFormData.value = {id,name,price,detail,pic,address,createtime}
        console.log("dada", ItemFormData.value);
    })

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue使用file-saver插件保存各種格式文件方式

    vue使用file-saver插件保存各種格式文件方式

    這篇文章主要介紹了vue使用file-saver插件保存各種格式文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue的生命周期操作示例

    Vue的生命周期操作示例

    這篇文章主要介紹了Vue的生命周期操作,結(jié)合實(shí)例形式分析了vue生命周期中各個(gè)函數(shù)的運(yùn)行步驟,需要的朋友可以參考下
    2019-09-09
  • Vue實(shí)現(xiàn)購(gòu)物車(chē)計(jì)算總價(jià)功能

    Vue實(shí)現(xiàn)購(gòu)物車(chē)計(jì)算總價(jià)功能

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)購(gòu)物車(chē)計(jì)算總價(jià)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue項(xiàng)目中使用AvueJs的詳細(xì)教程

    vue項(xiàng)目中使用AvueJs的詳細(xì)教程

    Avue.js是基于現(xiàn)有的element-ui庫(kù)進(jìn)行的二次封裝,簡(jiǎn)化一些繁瑣的操作,核心理念為數(shù)據(jù)驅(qū)動(dòng)視圖,主要的組件庫(kù)針對(duì)table表格和form表單場(chǎng)景,這篇文章給大家介紹了vue項(xiàng)目中使用AvueJs的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • Nuxt不同環(huán)境如何區(qū)分的方法

    Nuxt不同環(huán)境如何區(qū)分的方法

    在一般情況下,我們的項(xiàng)目肯定需要區(qū)分不同環(huán)境,那么Nuxt提供給我們這樣的基本能力了么,下面我們就一起來(lái)了解一下
    2021-05-05
  • Vue中tab欄切換的簡(jiǎn)單實(shí)現(xiàn)

    Vue中tab欄切換的簡(jiǎn)單實(shí)現(xiàn)

    本文主要介紹了Vue中tab欄切換的簡(jiǎn)單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • vuex在vite&vue3中的簡(jiǎn)單使用說(shuō)明

    vuex在vite&vue3中的簡(jiǎn)單使用說(shuō)明

    這篇文章主要介紹了vuex在vite&vue3中的簡(jiǎn)單使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue3?setup添加name的方法步驟

    Vue3?setup添加name的方法步驟

    如果你在 vue3 開(kāi)發(fā)中使用了語(yǔ)法的話,對(duì)于組件的name屬性,需要做一番額外的處理,下面這篇文章主要給大家介紹了關(guān)于Vue3?setup添加name的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue3容器布局和導(dǎo)航路由實(shí)現(xiàn)示例

    vue3容器布局和導(dǎo)航路由實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了vue3容器布局和導(dǎo)航路由實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • vue中keep-alive,include的緩存問(wèn)題

    vue中keep-alive,include的緩存問(wèn)題

    這篇文章主要介紹了vue中keep-alive,include的緩存問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評(píng)論

天水市| 滕州市| 澜沧| 延长县| 定远县| 浪卡子县| 辉县市| 沙洋县| 双江| 瓦房店市| 咸宁市| 柘城县| 陆河县| 蒙自县| 邢台市| 新绛县| 介休市| 阿拉善右旗| 日土县| 通海县| 营山县| 衡阳市| 竹溪县| 介休市| 洛隆县| 卓尼县| 邵阳县| 东乌| 盐亭县| 昭通市| 手游| 香格里拉县| 微山县| 保德县| 辉县市| 延安市| 淳安县| 志丹县| 城市| 资源县| 左贡县|