Почему возникает undefined возвращаемое значение?

Почему переменная store равна undefined в данном случае? <br/> <pre><code class="javascript">import FormCreate from "@/components/FormCreate.vue"
import FormUser from "@/components/FormUser.vue"
import { defineComponent } from 'vue'
import {postForm} from "@/stores/form"

export default defineComponent({
  setup() {
    const stores = postForm()
    return {stores}
  },
  methods: {
    onLogin(data) {
      console.log(this.stores)
    }
  }
})</code></pre> <br/> <br/> postForm - это объект из скрипта form и использует pinia.
  • 12 марта 2024 г. 16:19
Ответы на вопрос 2
Undefined возвращаемое значение появляется из-за того, что метод `setup()` возвращает только объект с переменной `stores`, но не возвращает методы. Поэтому переменная `stores` доступна в компоненте, но метод `onLogin` не определен в контексте этого компонента.

Переменная `store` равна `undefined` из-за того, что она не была объявлена внутри метода `setup()`. Вместо этого была объявлена переменная `stores`.

Если вы хотите иметь доступ к `stores` и методам в компоненте, вам нужно изменить ваш компонент следующим образом:

```javascript
import FormCreate from "@/components/FormCreate.vue"
import FormUser from "@/components/FormUser.vue"
import { defineComponent } from 'vue'
import {postForm} from "@/stores/form"

export default defineComponent({
  setup() {
    const stores = postForm()

    const onLogin = (data) => {
      console.log(stores)
    }

    return {stores, onLogin}
  }
})
``` 

Теперь метод `onLogin` будет доступен в контексте вашего компонента и переменная `stores` не будет равна `undefined`.
1. Проблема в том, что возвращает твой postForm. Сам по себе приведённых код рабочий. Нужен код postForm. 
2. Хотя приведённый код и рабочий - так писать нельзя: ты используешь либо Options Api, либо Composition Api. Не смешивая. Если есть setup - нет methods, если есть methods - нет setup. Да, оно работает. Но это говно. Как Тесла с дизель-генератором в багажнике.
Похожие вопросы