Как мне передать хранилище экземпляру vue в vue 3?

#vue.js #vuex

#vue.js #vuex

Вопрос:

В документах vuex указано, что вы должны передать созданное хранилище экземпляру vue следующим образом

 new Vue({
  el: '#app',
  store: store,
})
  

Моя проблема в том, что я создал новый проект vue, используя CLI, и который монтирует приложение в mian.js
использование create app следующим образом:

 import App from './App.vue'


const app = createApp(App)
app.mount('#app')
  

Как мне передать хранилище, используя второй метод, чтобы я мог получить к нему доступ из любого компонента, или как мне правильно смонтировать приложение, используя первый метод? В чем разница между ними?

Насколько я понимаю createApp() , это новое в vue 3, я не уверен, как это работает, я не могу найти нужные документы, в чем разница между new Vue({}) и createApp() ?

Я уверен, что не понимаю какой-то базовой концепции, но я не знаю, какой именно…

Спасибо.

Ответ №1:

Вы должны использовать createStore из vuex v4 rc, а затем вызвать app.use(store) :

store.js

 import { createStore } from 'vuex'

export const store = createStore({
  state () {
    return {
      count: 1
    }
  }
})
  

app.js

 import { createApp } from 'vue'
import { store } from './store'
import App from './App.vue'

const app = createApp(App)

app.use(store)

app.mount('#app')
  

Смотрите Процесс установки Vuex v4

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

1. Это то, что я делаю, но это все равно выдает мне ошибку TypeError: Object(...) is not a function .. Я понятия не имею, почему

2. Исправление, которое выдает ошибку хранилища, не определено..

3. В какой строке вашего кода вы получаете ошибку TypeError: Object(...) is not a function ?

4. export const store = createStore({ Редактировать: это исправлено.. Я не импортировал createStore с фигурными скобками { }

5. можете ли вы вывести createStore на консоль и добавить этот вывод в свой вопрос?