欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

但還沒有點擊編輯按鈕,其實編輯頁已經(jīng)初始化了,是因為在父組件中已經(jīng)導入使用了該編輯頁;

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

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

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

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

原因

是因為如果父組件的props值是通過異步操作獲取的,那么在最初渲染子組件時,props可能還沒有被賦值。而我正是使用異步操作把值通過props傳給子組件的;

代碼如下:

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

// 子組件標簽
<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的變化,確保當props值變化時能作出相應的處理。

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

總代碼如下:

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

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

}
  • 子組件:
// 標簽:
   <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) 切斷響應
        ItemFormData.value = {id,name,price,detail,pic,address,createtime}
        console.log("dada", ItemFormData.value);
    })

總結(jié)

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

相關(guān)文章

  • Vue.js 中的實用工具方法【推薦】

    Vue.js 中的實用工具方法【推薦】

    這篇文章主要介紹了Vue.js 中的實用工具方法,本文是小編日常開發(fā)中常用的一些工具方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • vue2.x,vue3.x使用provide/inject注入的區(qū)別說明

    vue2.x,vue3.x使用provide/inject注入的區(qū)別說明

    這篇文章主要介紹了vue2.x,vue3.x使用provide/inject注入的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue路由對不同界面進行傳參及跳轉(zhuǎn)的總結(jié)

    vue路由對不同界面進行傳參及跳轉(zhuǎn)的總結(jié)

    這篇文章主要介紹了vue路由對不同界面進行傳參及跳轉(zhuǎn)的總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 如何使用Vue3+Vite+TS快速搭建一套實用的腳手架

    如何使用Vue3+Vite+TS快速搭建一套實用的腳手架

    Vite是一個面向現(xiàn)代瀏覽器的一個更輕、更快的?Web?應用開發(fā)工具,下面這篇文章主要給大家介紹了關(guān)于如何使用Vue3+Vite+TS快速搭建一套實用腳手架的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • Vue源碼分析之虛擬DOM詳解

    Vue源碼分析之虛擬DOM詳解

    所謂虛擬DOM就是為了解決瀏覽器性能問題而被設計出來的。如前,若一次操作中有 10 次更新 這篇文章主要給大家介紹了關(guān)于Vue源碼分析之虛擬DOM的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • vue實現(xiàn)簡單無縫滾動效果

    vue實現(xiàn)簡單無縫滾動效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)簡單無縫滾動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue中解決el-date-picker更改樣式不生效問題

    vue中解決el-date-picker更改樣式不生效問題

    在使用Vue.js進行前端開發(fā)的過程中,Element?UI?是一個非常流行的UI庫,它提供了一套完整的組件來快速搭建美觀的用戶界面,但是我們經(jīng)常遇到一個問題使用Element?UI提供的el-date-picker組件時,嘗試自定義其樣式卻無法生效,所以本文給大家介紹如何解決這個問題
    2024-10-10
  • vue實現(xiàn)簡易計時器組件

    vue實現(xiàn)簡易計時器組件

    這篇文章主要為大家詳細介紹了vue實現(xiàn)簡易計時器組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 詳解Vue3 Composition API中的提取和重用邏輯

    詳解Vue3 Composition API中的提取和重用邏輯

    這篇文章主要介紹了Vue3 Composition API中的提取和重用邏輯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • vue單元格多列合并的實現(xiàn)

    vue單元格多列合并的實現(xiàn)

    這篇文章主要介紹了vue單元格多列合并的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論