亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vue遞歸組件不渲染

Vue遞歸組件不渲染

小怪獸愛吃肉 2023-09-14 22:06:10
我正在使用vue.js和vue-cli構建一個應用程序,您可以在其中配置訂單。用戶應該能夠選擇是否要在每個訂單后配置另一個訂單,或者是否完成。為了實現這一目標,我想遞歸地重用我的訂單組件:訂單.vue:<template>  <div id="order">    <other> // just to show that I used other components here and how    <div>      <button class="CustomButton" v-on:click="finalizeOrder">        Finalize Order      </button>      <button class="CustomButton" v-on:click="configureAdditionalOrder">        Configure Additional Order      </button>    </div>    <order v-if="additionalOrder" @passOrderObject="catchOrderObjectFromRecursiveChild" @finalizeOrder="passFinalizeOrder" />  </div></template><script>import Other from '@/components/Other.vue'export default {  components: {    Other  },  data () {    return {      additionalOrder: false    }  },  methods: {    configureAdditionalOrder () {      this.buildOrderObject()      this.additionalOrder = true    },    catchOrderObjectFromRecursiveChild (order) {      this.$emit('passOrderObject', order)    },    passFinalizeOrder () {      this.$emit('finalizeOrder')    },    finalizeOrder () {      this.buildOrderObject()      this.$emit('finalizeOrder')    },    buildOrderObject () {      var order = {        name: "abc",        price: "1000"      }      this.$emit('passOrderObject', order)    }  }</script><style></style>應用程序視圖:<template>  <div id="app">    <h1>Ordering System</h1>    <order @passOrderObject="catchOrderObject" @finalizeOrder="finalizeOrder" />  </div></template><script>import Vue from 'vue'import Order from '@/components/Order.vue'export default {  el: '#app',  components: {    Order  },  data () {    return {      finalization: false,      orderObjects: []    }  },  methods: {    finalizeOrder () {      this.finalization = true    },   catchOrderObject (order) {      this.orderObjects.push(order)    }</script>正如您所看到的,我在組件中使用了一個布爾變量,如果單擊“配置附加訂單”按鈕,該變量應該再次顯示相同的組件。我使用自定義事件將數據傳遞到父組件 (App.vue),訂單組件只需進一步傳遞它們即可處理來自其遞歸子組件的這些事件。應用程序本身可以工作,但是單擊按鈕來配置附加訂單除了發出自定義事件之外什么也不做。我在這里做錯了什么?
查看完整描述

1 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

對于遞歸組件,您應該為該組件提供一個名稱:


<script>

import Other from '@/components/Other.vue'


export default {

  name:'order',// this is the component name

  components: {

    Other

  },

  data () {

    return {

      additionalOrder: false

    }

  },

...


查看完整回答
反對 回復 2023-09-14
  • 1 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號