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

vue在mounted拿不到props中傳遞的數(shù)據(jù)問題

 更新時間:2023年03月24日 08:55:32   作者:老大oba  
這篇文章主要介紹了vue在mounted拿不到props中傳遞的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue mounted拿不到props中傳遞的數(shù)據(jù)

  • 父組件向子組件傳遞參數(shù)
  • 子組件使用props獲取

但是當子組件中代碼異步的時候,可能會出現(xiàn)created和mounted中取不到傳遞過來的參數(shù)的情況。

 export default {
    props: {
        courseDetail: {
            type: Object,
        },
    },
    data () {
        return {
        }
    },
    watch:{
    // 監(jiān)聽對象中的某個值 也可以直接監(jiān)聽某個對象
     'courseDetail.id'(newValue,oldValue){
     	// 異步方法
        this.getCommentList()
      }
    }
}

vue props傳值問題 created mounted watch

props 傳值在子組件定義props 關(guān)于mounted created獲取問題

export default{
props:["name"],
data(){
? return{
? ?data:this.name
? ?}
},
created(){
console.log(data); // ?小明
console.log(this.name) // ?小明
},
mounted(){
console.log(data); // ?小明
console.log(this.name) // ?小明
}

當props是動態(tài)獲取的時候AJAX請求獲取的數(shù)據(jù)

你的 name里面的值并不是固定的,而是動態(tài)獲取的,這種情況下,你會發(fā)現(xiàn) methods 中是取不到你的 chartData 的,或者取到的一直是默認值。

比如下面這個情況

父組件

<template>
<div id="app">
?? ?<Child :name="data"></Child>
</div>
</template>
export default{
props:["name"],
data(){
? return{
? ?data:[]
? ?}
},
mounted(){
this.getAddName();
},
methods:{
getAddName() {
?? ?axios.post(api,{params}).then(res=>{
?? ? ?this.data = res.data.name
?? ?}).catch(err=>{
?? ??? ?consloe.log(err);
?? ? ?})
?? ?}
? }
}

子組件Child

export default{
props:["name"],
data(){
? return{
? ?data:[]
? ?}
},
created(){
console.log(this.name) // unidenfied ?ajax異步獲取的值?
},
mounted(){
console.log(this.name) // unidenfied ajax異步獲取的值?
?}
}

解決動態(tài)獲取props取值傳值問題

這情況我是使用watch處理:

export default {
? ? props: ['name'],
? ? ? ? data(){
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? data: []
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? watch: {
? ? ? ? ? ? //正確給 cData 賦值的 方法
? ? ? ? ? ? name: function(newVal,oldVal){
? ? ? ? ? ? ? ? this.data = newVal; ?//newVal即是name
? ? ? ? ? ? ? ? newVal && this.dataChild(); //newVal存在的話執(zhí)行dataChild函數(shù)
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? ? dataChild(){
? ? ? ? ? ? ? ? //執(zhí)行其他邏輯
? ? ? ? ? ? }
? ? ? ? },     
? ? ? ? mounted() {
? ? ? ? ? ? //在created、mounted這樣的生命周期, 給 this.data賦值會失敗,錯誤賦值方法
? ? ? ? ? ? // this.data= this.name;?
? ? ? ? }
}

監(jiān)聽 name 的值,當它由空轉(zhuǎn)變時就會觸發(fā),這時候就能取到了,拿到值后要做的處理方法也需要在 watch 里面執(zhí)行。

數(shù)據(jù)渲染問題

props 渲染時,直接使用 在DOM上使用{{name}}渲染

針對于動態(tài)渲染DOM的操作問題:使用this.n e x t T i c k ( ) / / 等 待 渲 染 t h i s . nextTick() //等待渲染 this.nextTick()//等待渲染this.nextTick()將回調(diào)延遲到下次 DOM 更新循環(huán)之后執(zhí)行

export default {
? ? props: ['name'],
? ? ? ? data(){
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? data: []
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? watch: {
? ? ? ? ? ? //正確給 cData 賦值的 方法
? ? ? ? ? ? name: function(newVal,oldVal){
? ? ? ? ? ? ? if(newVal){ //當newVal 數(shù)據(jù)發(fā)生改變時
? ? ? ? ? ? ? ? this.$nexTick(()=>{ //等待newVal 數(shù)據(jù)渲染完成
?? ??? ??? ??? ?document.getElementById(ID).style.backgroundColor="#fffff";
?? ??? ??? ??? ?})
? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? ? dataChild(){
? ? ? ? ? ? ? ? //執(zhí)行其他邏輯
? ? ? ? ? ? }
? ? ? ? },     
? ? ? ? mounted() {
? ? ? ? ? ? //在created、mounted這樣的生命周期, 給 this.data賦值會失敗,錯誤賦值方法
? ? ? ? ? ? // this.data= this.name;?
? ? ? ? }
}

props總結(jié)

獲取不到props的原因:

因為父組件中要傳遞給子組件的 props 屬性 是通過 ajax請求獲取的, 請求的這個過程是需要時間的異步獲取等待返回,然而子組件的渲染要快于ajax請求過程,所以此時在created 、 mounted 只執(zhí)行一次的生命鉤子函數(shù)中,執(zhí)行完成后,此時 props 還沒有傳遞(子組件),所以只能獲取默認的props值,當props獲取ajax完成后傳遞進來,此時生命周期函數(shù)已經(jīng)執(zhí)行完成。所以wacth監(jiān)聽數(shù)據(jù)變化來解決問題。

最后

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

相關(guān)文章

  • 在vue中使用iframe解決視頻資源的防盜鏈

    在vue中使用iframe解決視頻資源的防盜鏈

    我們的vue2.0項目當中,存儲了許多圖片和視頻資源,所以我們需要增加防盜鏈設(shè)置,但是這樣一來,當我們將其他網(wǎng)站上的視頻資源,想入到我們的環(huán)境當中的時候,會報錯,所以本文給大家介紹了在vue中使用iframe解決視頻資源的防盜鏈,需要的朋友可以參考下
    2023-12-12
  • vue添加axios,并且指定baseurl的方法

    vue添加axios,并且指定baseurl的方法

    今天小編就為大家分享一篇vue添加axios,并且指定baseurl的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 解決vue+webpack打包路徑的問題

    解決vue+webpack打包路徑的問題

    下面小編就為大家分享一篇解決vue+webpack打包路徑的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue-admin-template解決登錄和跨域問題解決

    vue-admin-template解決登錄和跨域問題解決

    本文主要介紹了vue-admin-template解決登錄和跨域問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • vue3?setup中使用響應(yīng)式的方法

    vue3?setup中使用響應(yīng)式的方法

    文章主要介紹了Vue3中的響應(yīng)式數(shù)據(jù)處理機制,包括ref和reactive函數(shù)的使用,它們的區(qū)別,以及如何使用watch和watchEffect來監(jiān)聽數(shù)據(jù)變化,文章最后提到了Vue3的生命周期鉤子和自定義hooks的概念,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Vue3中如何使用SCSS編寫樣式

    Vue3中如何使用SCSS編寫樣式

    在Vue模板中啟用這些表現(xiàn)力庫插件的最簡單方法是在初始化項目時安裝它們,或使用 npm install(或 yarn add)安裝包,這篇文章主要介紹了Vue3中如何使用SCSS編寫樣式,需要的朋友可以參考下
    2023-12-12
  • vue中template的三種寫法示例

    vue中template的三種寫法示例

    這篇文章主要介紹了vue中template的三種寫法示例,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下
    2020-10-10
  • vue 本地服務(wù)不能被外部IP訪問的完美解決方法

    vue 本地服務(wù)不能被外部IP訪問的完美解決方法

    這篇文章主要介紹了vue 本地服務(wù)不能被外部IP訪問的解決方法,本文通過代碼講解的非常詳細,需要的朋友可以參考下
    2018-10-10
  • vue3.0中使用postcss-pxtorem的具體方法

    vue3.0中使用postcss-pxtorem的具體方法

    這篇文章主要介紹了vue3.0中使用postcss-pxtorem的具體方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Vue全局事件總線和訂閱與發(fā)布使用案例分析講解

    Vue全局事件總線和訂閱與發(fā)布使用案例分析講解

    在?vue?里我們可以通過全局事件總線來實現(xiàn)任意組件之間通信,它的原理是給?Vue?的原型對象上面添加一個屬性。這樣的話我所有組件的都可以訪問到這個屬性,然后可以通過這個屬性來訪問其他組件給這個屬性上面綁定的一些方法,從而去傳遞數(shù)據(jù)
    2022-08-08

最新評論

外汇| 宁蒗| 黄石市| 沽源县| 门源| 特克斯县| 安国市| 特克斯县| 都兰县| 梁河县| 昭通市| 邹平县| 田林县| 罗城| 九台市| 山阳县| 五常市| 孝昌县| 横峰县| 望谟县| 德钦县| 汉沽区| 迁安市| 丰原市| 青海省| 揭西县| 斗六市| 和田市| 清远市| 潮安县| 通州市| 皮山县| 资中县| 郓城县| 泰顺县| 东乡| 甘肃省| 云浮市| 铜山县| 黄陵县| 通化县|