Как получить значение реквизита для использования в массиве излучений

#javascript #vue.js #vuejs3

Вопрос:

Я получил ошибку консоли, когда попытался перечислить пользовательское событие в параметре компонента «испускает», как это:

родитель

 <Btn
   event-name="toggleSideMenu"
   @toggle-side-menu="toggleHandler">
        toggle
 </Btn>
 

ребенок

 <template>
   <button @click="handleClick">
      <slot></slot>
   </button>
</template>

export default {
   props: {
      eventName: {
         type: String,
         default: ''
      }
   },
   emits: [this.eventName], // Uncaught TypeError: Cannot read property 'eventName' of undefined
   methods: {
      handleClick() {
          this.$emit(this.eventName)
      }
   }
}
 

Как правильно заставить эту штуку работать?

Комментарии:

1. уберите это. из массива излучений.

2. получена аналогичная ошибка: Не удалось скомпилировать. ошибка «Имя события» не определено нет-не определено

3. О чем emits: {this.eventName: null} это ?

4. Пожалуйста, поделитесь своим кодом эмиссии и родительским элементом, который прослушивает имя события.

Ответ №1:

Я не думаю, что ты сможешь это сделать.

Возможно, вам придется найти способ обойти это. Вы все еще можете выдавать событие, не определяя его в emits массиве, но в конечном итоге вы теряете некоторые преимущества.

Для этого есть RFC/предложение, но, похоже, оно никуда не приведет.