vue父組件向子組件傳值,不實時更新解決


vue父組件向子組件傳值,不實時更新解決

  在運用vue搭建項目將頁面分成各個組件時,時常會遇到將父組件的請求到的數據傳入子組件用於操作顯示,然后將操作好的數據從子組件傳出,因為vue經驗不常用就會將其遺忘,所以特此將所閱讀到並有所獲的博客修改后記錄下來,防止技術遺忘。

  現在我們創建一個template子組件,子組件命名為hi-popSelect,並在父組件引入。

// 父組件引用
 <hi-popSelect :isShow="isShowData" @func="getMsg"></hi-popSelect>  
//  在父組件中的子組件標簽中創建一個自定義屬性isShow,將父組件的data里面的isShowData數據傳入給子組件
// @func為子組件中傳回來的為key值為func的數值
// getMsg則為父組件的函數,
// getMsg會將傳入的func對應的數值傳入自己的函數變量參數value,從而觸發此函數

 import popSelect from '../components/popSelect';
  components: {
   'hi-popSelect': popSelect
  },

  data(){
    return {   
    isShowData: false //data屬性,用於父組件傳入子組件參數
   }  
  }

  methods: {
   getMsg (data) {
    this.isShowData = data;
   },
  }

  創建子組件hi-popSelect:

  <el-dialog class="hi-dialog" :visible.sync="currentIsShow">
  </el-dialog>

  

//  父子傳參(父傳子)
  props: ['isShow'], 
//  isShow為在父組件中的子組件標簽中自定義的屬性名
  data(){
   return {
    currentIsShow: this.isShow, 
//  在data里重新賦值,不改變父組件傳值,
//  this.isShow指代的是props里面的參數isShow
   }
  }

  watch: {
// 因為在vue生命周期中子組件創建后只會賦一次值,之后父組件數值變化了,
//  子組件的數值也會變化,但顯示的數據不會發生改變。
//  所以需要監聽父組件傳參變化重新賦值讓子組件重新賦值。
//  此處的isShow並不是函數,而是對應的要賦值的變量名isShow
   isShow (val) {
    this.currentIsShow = val;
   }
  },

  methods: { 
 // 關閉對話框並把值傳給父組件 (子傳父),此函數未調用
 // 函數作用是當觸發此函數時子組件會將key值為func的數值傳給父組件,
 // this.currentIsShow為變量值
   hideData () {
    this.$emit('func', this.currentIsShow);
   },
  }

  最后,非常感謝原博客博主,地址: 原博客地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM