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

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

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

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

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

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

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

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

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

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

原因

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

代碼如下:

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

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

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

}

解決方案

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

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

總代碼如下:

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

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

}
  • 子組件:
// 標(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)  // 是否拉開抽屜
let ItemFormData = ref({}) // 數(shù)據(jù)對象
defineExpose({
  // 對外暴露控制拉開抽屜的方法
  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é)

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

相關(guān)文章

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

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

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

    Vue的生命周期操作示例

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

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

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

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

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

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

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

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

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

    vuex在vite&vue3中的簡單使用說明

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

    Vue3?setup添加name的方法步驟

    如果你在 vue3 開發(fā)中使用了語法的話,對于組件的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的緩存問題

    vue中keep-alive,include的緩存問題

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

最新評論

衡山县| 红安县| 昌乐县| 望都县| 永安市| 莆田市| 根河市| 砚山县| 桂东县| 大石桥市| 沐川县| 建德市| 赤峰市| 合水县| 炉霍县| 宜兴市| 榕江县| 镇康县| 石柱| 永清县| 广东省| 平远县| 澄城县| 遵义市| 河西区| 杭锦后旗| 民勤县| 泉州市| 龙口市| 温州市| 洞头县| 神木县| 安多县| 武威市| 蓬溪县| 昔阳县| 辽宁省| 武邑县| 白山市| 扎兰屯市| 大余县|