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

vue3?使用provide?inject父子組件傳值失敗且子組件不響應

 更新時間:2023年08月22日 14:23:26   作者:_Jyann_  
這篇文章主要介紹了vue3使用provide?inject父子組件傳值傳不過去且傳遞后子組件不具備響應性問題解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1.普通傳值

傳遞普通值,直接父級

provide(/* 注入名 */ 'message', /* 值 */ 'hello!')

子級:

const message = inject('message')

2.通過axios異步獲取數(shù)據(jù)后傳值

問題:

在項目中一般是通過接口請求到數(shù)據(jù)后再傳遞給子級,provide和inject如果直接再調用接口的方法內傳值會報警告,而且值也傳遞不過去。就是說provide()必須在setup根節(jié)點處才能使用,在方法里面用是不行的

但是,直接在setup根節(jié)點處傳遞,由于數(shù)據(jù)是異步獲取的,直接傳遞時數(shù)據(jù)是還沒有值的,傳遞過去的都是聲明時的初始值。

解決:

使用方法包裝需要傳遞的值,然后provide()傳遞過去的是方法,inject()時通過方法調用獲取值

父級:

const provideData = () =>{
? return {
? ? columns: columns.value,
? ? data: resourceData.value,
? ? pageNum: pageNum.value,
? ? total: total.value,
? ? pageSize: pageSize.value
? }
}
provide('provideData',provideData);
子級獲?。?
const provideData = inject('provideData');
const columns = provideData().columns;
const data = provideData().data;
const total = provideData().total;
const pageNum = provideData().pageNum;
const pageSize = provideData().pageSize;

3.父組件值更改后,子組件的值不具備響應性

vue本身就是這樣設計的,注入后子組件的值不具有響應性,但是我們可以進行處理

以方法形式傳遞值

const provideData = () =>{
  return {
    columns: ()=>columns.value,
    data: ()=>resourceData.value,
    pageNum: ()=>pageNum.value,
    total: ()=>total.value,
    pageSize: ()=>pageSize.value
  }
}
provide('provideData',provideData);

子組件中再通過方法進行調用:

const provideData = inject('provideData');
const columns = computed(() => provideData().columns())
const data = computed(() => provideData().data())
const total = computed(() => provideData().total())
const pageNum = computed(() => provideData().pageNum())
const pageSize = computed(() => provideData().pageSize())

以對象形式傳遞值

父組件:

const provideData = () =>{
  return {
    data:{
      columns: columns.value,
      data: resourceData.value,
      pageNum: pageNum.value,
      total: total.value,
      pageSize: pageSize.value
    }
  }
}
provide('provideData',provideData);

子組件:

const provideData = inject('provideData');
const columns = computed(() => provideData().data.columns)
const data = computed(() => provideData().data.data)
const total = computed(() => provideData().data.total)
const pageNum = computed(() => provideData().data.pageNum)
const pageSize = computed(() => provideData().data.pageSize)

以上就是vue3 使用provide inject父子組件傳值傳不過去且傳遞后子組件不具備響應性的詳細內容,更多關于vue3 使用provide inject父子組件傳值傳不過去且傳遞后子組件不具備響應性的資料請關注腳本之家其它相關文章!

相關文章

  • Vue3?Hooks?模塊化抽離示例詳解

    Vue3?Hooks?模塊化抽離示例詳解

    這篇文章主要為大家介紹了Vue3?Hooks?模塊化抽離示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Vue上傳組件vue Simple Uploader的用法示例

    Vue上傳組件vue Simple Uploader的用法示例

    本篇文章主要介紹了Vue上傳組件vue Simple Uploader的用法示例,非常具有實用價值,需要的朋友可以參考下
    2017-08-08
  • Element-plus表格數(shù)據(jù)延遲加載的實現(xiàn)方案

    Element-plus表格數(shù)據(jù)延遲加載的實現(xiàn)方案

    本文介紹了在前端展示大量數(shù)據(jù)時遇到的加載卡頓問題,并提供了一種解決方案:延遲加載,具體做法是設置加載數(shù)量,對于數(shù)據(jù)量較大的情況,進行分批加載數(shù)據(jù),通過類選擇器找到表格滾動條并進行監(jiān)聽綁定事件,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • vue實現(xiàn)選擇商品規(guī)格功能

    vue實現(xiàn)選擇商品規(guī)格功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)選擇商品規(guī)格功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue中實現(xiàn)展示與隱藏側邊欄功能

    vue中實現(xiàn)展示與隱藏側邊欄功能

    這篇文章主要介紹了vue中實現(xiàn)展示與隱藏側邊欄功能,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vuejs響應用戶事件(如點擊事件)

    vuejs響應用戶事件(如點擊事件)

    本篇文章主要介紹了vuejs響應用戶事件(如點擊),通過vuejs響應用戶事件的技巧,具有一定的參考價值,有興趣的小伙伴們可以參考一下。
    2017-03-03
  • 通過npm或yarn自動生成vue組件的方法示例

    通過npm或yarn自動生成vue組件的方法示例

    這篇文章主要介紹了通過npm或yarn自動生成vue組件的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue儲存storage時含有布爾值的解決方案

    vue儲存storage時含有布爾值的解決方案

    這篇文章主要介紹了vue儲存storage時含有布爾值的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • vue插件tab選項卡使用小結

    vue插件tab選項卡使用小結

    這篇文章主要為大家詳細介紹了vue插件tab選項卡的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 解決vue的component標簽渲染問題

    解決vue的component標簽渲染問題

    這篇文章主要介紹了解決vue的component標簽渲染問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論