簡體   English   中英

將動態道具傳遞給 Vue.js 中的子組件

[英]Pass dynamic props to child component in Vue.js

我的 Web 應用程序中有兩個組件,主要和更新模式。 我希望模態組件可以在進入主頁時立即顯示。 所以,當 main.vue 被掛載時, showModal被設置為 true。 但是,當網頁進入主頁面時,模態不會出現。 我認為showModal變為 true 並傳遞給模態組件。 當我使用 vue devtool 時,它顯示popModal為 false。 這真的讓我很困惑。

我應該更改設置真實值或任何建議的生命周期嗎?

謝謝!

主程序

<template>
  <modal :isShow="showModal"></modal>
  ...
</template>

<script>
export default {
 data () {
   return {
    showModal: false
  }
 }

 mounted() {
  //do something
  this.showModal = true
 }
}
<script>

Modal.vue

<template>
  <modal v-if="popModal" v-model="popModal">
   <p>xxxxxx</p>
   <button @click="fn()">Click</button>
  </modal>
</template>

<script>
export default {
 props: ['isShow'],
 data () {
  return {
   popModal: this.isShow//supposed to be true
  }
 }
 methods: {
  fn() {
    this.popModal = false
  }
 }
}
<script>

問題是數據在創建組件時被初始化一次。 當道具 isShow 更改時,數據中的舊值仍然存在。 您需要添加觀察者來更新數據

watch: {
  isShow(newVal, oldVal) {
    // newVal contains the updated value
    // oldVal contains the previous value
    this.popModal = newVal;
  }
}

或者您可以在值更改后初始化數據:

// Main.vue
<modal v-if="showModal" :isShow="showModal"></modal>

// Modal.vue
<modal v-model="popModal">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM