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

Vue子組件props從父組件接收數(shù)據(jù)并存入data

 更新時(shí)間:2022年08月23日 11:46:07   作者:我有柚子茶噢  
這篇文章主要介紹了Vue子組件props從父組件接收數(shù)據(jù)并存入data的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

經(jīng)過(guò)測(cè)試父組件中傳遞過(guò)來(lái)的數(shù)據(jù)有以下特點(diǎn):

1.不允許直接修改

如果直接使用 this.xxx = action 操作的話 控制臺(tái)會(huì)報(bào)下面這個(gè)錯(cuò)誤

大概的意思是 你小子不要隨便劈我瓜,我父組件的瓜豈是你能變的,父組件重新渲染時(shí),這個(gè)值會(huì)被覆蓋,你小子自個(gè)兒用計(jì)算屬性或者data存一下吧

2.存在異步的情況

假如父組件該數(shù)據(jù)是后臺(tái)接口獲取的數(shù)據(jù),那么會(huì)產(chǎn)生這種情況。子組件的生命周期都已經(jīng)走完了,父組件的數(shù)據(jù)還沒(méi)傳過(guò)來(lái)。因?yàn)閂8引擎的運(yùn)行速度是很快的,萬(wàn)分之一毫秒都等不了,如果是異步的話,子組件里是沒(méi)有辦法操作這個(gè)數(shù)據(jù)的。

父組件
<template>
  <div>
    <children :father="father"></children>
  </div>
</template>
<script>
import children from "./children";
export default {
  components: { children },
  data() {
    return {
      father: null
    };
  },
  mounted() {
    setTimeout(() => {
      this.father = { name: "父親" };
    }, 1000);
  },
  methods: {}
};
</script>
子組件
<template>
  <div></div>
</template>
<script>
export default {
  data() {
    return {
      student: {
        name: "張三"
      }
    };
  },
  props: {
    father: {
      type: Object,
      default: () => {}
    }
  },
  watch: {
    father: {
      handler(newVal) {
        this.fatherData =newVal
        console.log(this.fatherData);
      },
      deep: true,
      immediate: true
    }
  },
  created() {},
  mounted() {
    console.log(this.father);
  },
  methods: {}
};
</script>

解決思路

第一步

在父組件中使用子組件時(shí),為子組件加上v-if='flag',初始賦值為flag=false,等待異步賦值操作完成后修改flag=true,這個(gè)操作不單單只試用于異步情況,建議只要涉及到數(shù)據(jù)流的操作與加工,都加上v-if限制,保證數(shù)據(jù)獲取到之后再開(kāi)始運(yùn)作子組件的生命周期。

//也可以這樣,簡(jiǎn)潔一些
 <div>
    <children v-if="father" :father="father"></children>
  </div>

第二步

在子組件中對(duì)props進(jìn)行watch監(jiān)聽(tīng),變化后立刻將newVal賦值到data中并保存起來(lái)

watch: {
    father: {
      handler(newVal) {
        this.fatherData =newVal
        console.log(this.fatherData);
      },
      deep: true,
      immediate: true
    }
  },

這里還會(huì)出現(xiàn)一種額外的情況,就是watch中可以賦值到,也能打印出具體的值出來(lái),但是一到其他生命周期中使用確是空,這個(gè)情況

這種情況可能是對(duì)象共享地址,或者數(shù)據(jù)正處于處理中,應(yīng)當(dāng)自行進(jìn)行深克隆一份進(jìn)行傳遞,一般只要方法寫(xiě)得比較健壯,此種情況基本不會(huì)出現(xiàn)

到此這篇關(guān)于Vue子組件props從父組件接收數(shù)據(jù)并存入data的文章就介紹到這了,更多相關(guān)Vue props內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue動(dòng)畫(huà)效果實(shí)現(xiàn)方法示例

    vue動(dòng)畫(huà)效果實(shí)現(xiàn)方法示例

    這篇文章主要介紹了vue動(dòng)畫(huà)效果實(shí)現(xiàn)方法,結(jié)合完整實(shí)例形式分析了vue.js+animate.css實(shí)現(xiàn)的動(dòng)畫(huà)切換效果相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • vue+Minio實(shí)現(xiàn)多文件進(jìn)度上傳的詳細(xì)步驟

    vue+Minio實(shí)現(xiàn)多文件進(jìn)度上傳的詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于如何利用vue+Minio實(shí)現(xiàn)多文件進(jìn)度上傳的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 解讀vue頁(yè)面監(jiān)聽(tīng)store值改變問(wèn)題

    解讀vue頁(yè)面監(jiān)聽(tīng)store值改變問(wèn)題

    這篇文章主要介紹了解讀vue頁(yè)面監(jiān)聽(tīng)store值改變問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-10-10
  • Vue使用虛擬dom進(jìn)行渲染view的方法

    Vue使用虛擬dom進(jìn)行渲染view的方法

    這篇文章主要介紹了Vue使用虛擬dom進(jìn)行渲染view的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • vue使用vue-cli快速創(chuàng)建工程

    vue使用vue-cli快速創(chuàng)建工程

    這篇文章主要介紹了vue使用vue-cli快速創(chuàng)建工程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 快速入門(mén)Vue

    快速入門(mén)Vue

    本篇文章主要介紹了如何快速入門(mén)Vue的方法,對(duì)0基礎(chǔ)學(xué)習(xí)Vue的朋友會(huì)很有幫助,跟著小編一起來(lái)看下吧
    2016-12-12
  • vue用vis插件如何實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)鋱D

    vue用vis插件如何實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)鋱D

    這篇文章主要介紹了vue用vis插件如何實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)鋱D,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue?element-plus圖片預(yù)覽實(shí)現(xiàn)方法

    vue?element-plus圖片預(yù)覽實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于vue?element-plus圖片預(yù)覽實(shí)現(xiàn)的相關(guān)資料,最近的項(xiàng)目中有圖片預(yù)覽的場(chǎng)景,也是踩了一些坑,在這里總結(jié)一下,需要的朋友可以參考下
    2023-07-07
  • vue3 學(xué)習(xí)筆記之a(chǎn)xios的使用變化總結(jié)

    vue3 學(xué)習(xí)筆記之a(chǎn)xios的使用變化總結(jié)

    本篇文章主要旨在幫助正在學(xué)vue3或者準(zhǔn)備學(xué)vue3的同學(xué)了解網(wǎng)絡(luò)請(qǐng)求axios該如何使用,防止接觸了一點(diǎn)點(diǎn)vue3的同學(xué)會(huì)有個(gè)疑問(wèn)。有興趣的小伙伴可以關(guān)注一下
    2021-11-11
  • 基于vue+element實(shí)現(xiàn)全局loading過(guò)程詳解

    基于vue+element實(shí)現(xiàn)全局loading過(guò)程詳解

    這篇文章主要介紹了基于vue+element實(shí)現(xiàn)全局loading過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論