Как обратиться к функции в Vue 3 Composition API через $refs?

Как вызвать функцию `nextStep()` из компонента `vue-multi-step-form` во Vue 3 Composition API? Я пробовал использовать `ref` для доступа к компоненту и вызова функции, но получаю ошибку "myWizard.value.nextStep is not a function". Как правильно обратиться к функции `nextStep()` используя Composition API?
  • 27 апреля 2024 г. 15:30
Ответы на вопрос 2
Для вызова функции `nextStep()` из компонента `vue-multi-step-form` через `$refs` в Vue 3 Composition API, вам следует использовать реактивный `ref` для доступа к компоненту.

Пример:

```javascript
import { ref } from 'vue';

export default {
  setup() {
    const myWizard = ref(null);

    const callNextStep = () => {
      myWizard.value.nextStep();
    };

    return {
      myWizard,
      callNextStep
    };
  }
}
```

Затем в вашем шаблоне вы можете вызвать функцию `callNextStep` для вызова `nextStep()` из компонента `vue-multi-step-form`.

Пример использования в шаблоне:

```html
<template>
  <vue-multi-step-form ref="myWizard"></vue-multi-step-form>
  <button @click="callNextStep">Next Step</button>
</template>
```

Теперь при нажатии на кнопку "Next Step" будет вызываться функция `nextStep()` из компонента `vue-multi-step-form`.
Из дочернего объекта можно вызвать родительский через $emit. 
В родительском компоненте надо прописать
<daughter-component
     @nextStep="nextStep"
></daughter-component>


В дочернем компоненте
valdiateStep(currentStepIndex){
    this.$emit('nextStep'); // если надо передать параметр то this.$emit('nextStep', param); 
}


Если компоненты не связаны как родитель-ребенок то есть смысл покопать в сторону vue event bus и Шина событий
Похожие вопросы