Skip to content

Міграція з 0.0.7 ​

Версії після 0.0.7: 0.1.0, та 0.2.0, прийшли з кількома серйозними змінами. Цей посібник допоможе вам перейти незалежно від того, використовуєте ви Vue 2 або Vue 3. Весь журнал змін можна знайти в репозиторії:

Якщо у вас є запитання чи проблеми щодо міграції, не соромтеся відкрити обговорення, щоб попросити допомоги.

Більше немає store.state ​

Ви більше не отримуєте доступ до стану сховища через властивість state, ви можете отримати прямий доступ до будь-якої властивості стану.

Дано сховище, визначене за допомогою:

js
const useStore({
  id: 'main',
  state: () => ({ count: 0 })
})
const useStore({
  id: 'main',
  state: () => ({ count: 0 })
})

Виконайте

diff
 const store = useStore()

-store.state.count++
+store.count.++
 const store = useStore()

-store.state.count++
+store.count.++

За потреби ви все ще можете отримати доступ до всього стану сховища за допомогою $state:

diff
-store.state = newState
+store.$state = newState
-store.state = newState
+store.$state = newState

Перейменування властивостей сховища ​

Усі властивості сховища (id, patch, reset, тощо) тепер мають префікс $, щоб дозволити властивостям, які визначені в сховищі, мати ті ж самі імена. Порада: ви можете виконати рефакторинг усієї кодової бази за допомогою клавіші F2 (або клік правою кнопкою миші + Refactor) на кожній із властивостей сховища

diff
 const store = useStore()
-store.patch({ count: 0 })
+store.$patch({ count: 0 })

-store.reset()
+store.$reset()

-store.id
+store.$id
 const store = useStore()
-store.patch({ count: 0 })
+store.$patch({ count: 0 })

-store.reset()
+store.$reset()

-store.id
+store.$id

Екземпляр Pinia ​

Тепер необхідно створити екземпляр pinia та встановити його:

Якщо ви використовуєте Vue 2 (Pinia <= 1):

js
import Vue from 'vue'
import { createPinia, PiniaVuePlugin } from 'pinia'

const pinia = createPinia()
Vue.use(PiniaVuePlugin)
new Vue({
  el: '#app',
  pinia,
  // ...
})
import Vue from 'vue'
import { createPinia, PiniaVuePlugin } from 'pinia'

const pinia = createPinia()
Vue.use(PiniaVuePlugin)
new Vue({
  el: '#app',
  pinia,
  // ...
})

Якщо ви використовуєте Vue 3 (Pinia >= 2):

js
import { createApp } from 'vue'
import { createPinia, PiniaVuePlugin } from 'pinia'
import App from './App.vue'

const pinia = createPinia()
createApp(App).use(pinia).mount('#app')
import { createApp } from 'vue'
import { createPinia, PiniaVuePlugin } from 'pinia'
import App from './App.vue'

const pinia = createPinia()
createApp(App).use(pinia).mount('#app')

Екземпляр pinia - це те, що зберігає стан і має бути унікальним для кожного застосунку. Щоб отримати докладніші відомості, перегляньте розділ документації з SSR.

Зміни SSR ​

Плагін SSR PiniaSsr більше не потрібен і його видалено. З появою екземплярів pinia getRootState() більше не потрібен і його слід замінити на pinia.state.value:

Якщо ви використовуєте Vue 2 (Pinia <= 1):

diff
// entry-server.js
-import { getRootState, PiniaSsr } from 'pinia',
+import { createPinia, PiniaVuePlugin } from 'pinia',


-// встановіть плагін, щоб автоматично використовувати правильний контекст у налаштуваннях і onServerPrefetch
-Vue.use(PiniaSsr);
+Vue.use(PiniaVuePlugin)

 export default context => {
+  const pinia = createPinia()
   const app = new Vue({
     // інші налаштування
+    pinia
   })

   context.rendered = () => {
     // передача стану контексту
-    context.piniaState = getRootState(context.req)
+    context.piniaState = pinia.state.value
   };

-   return { app }
+   return { app, pinia }
 }
// entry-server.js
-import { getRootState, PiniaSsr } from 'pinia',
+import { createPinia, PiniaVuePlugin } from 'pinia',


-// встановіть плагін, щоб автоматично використовувати правильний контекст у налаштуваннях і onServerPrefetch
-Vue.use(PiniaSsr);
+Vue.use(PiniaVuePlugin)

 export default context => {
+  const pinia = createPinia()
   const app = new Vue({
     // інші налаштування
+    pinia
   })

   context.rendered = () => {
     // передача стану контексту
-    context.piniaState = getRootState(context.req)
+    context.piniaState = pinia.state.value
   };

-   return { app }
+   return { app, pinia }
 }

setActiveReq() і getActiveReq() були замінені на setActivePinia() і getActivePinia() відповідно. setActivePinia() може передаватися лише екземпляру pinia, створеному за допомогою createPinia(). Зауважте, що у більшості випадків ви не використовуватимете безпосередньо ці функції.

Released under the MIT License.