mirror of
https://github.com/jaywcjlove/reference.git
synced 2025-06-22 06:51:31 +08:00
doc: update pinia.md #672
This commit is contained in:
104
docs/pinia.md
104
docs/pinia.md
@ -16,25 +16,10 @@ yarn add pinia
|
||||
pnpm add pinia
|
||||
```
|
||||
|
||||
### 创建 Pinia 实例
|
||||
|
||||
在你的 Vue 应用中创建一个 Pinia 实例并将其传递给 Vue:
|
||||
|
||||
```javascript
|
||||
import { createApp } from 'vue'
|
||||
import { createPinia } from 'pinia'
|
||||
import App from './App.vue'
|
||||
|
||||
const app = createApp(App)
|
||||
const pinia = createPinia()
|
||||
|
||||
app.use(pinia)
|
||||
app.mount('#app')
|
||||
```
|
||||
|
||||
### 定义 Store
|
||||
<!--rehype:wrap-class=col-span-2 row-span-2-->
|
||||
|
||||
创建一个 store 文件(例如 `src/stores/counter.js`),并定义 store:
|
||||
创建一个 store 文件(例如 `src/stores/counter.js`),并定义 `store`
|
||||
|
||||
```javascript
|
||||
import { defineStore } from 'pinia'
|
||||
@ -54,9 +39,36 @@ export const useCounterStore = defineStore('counter', {
|
||||
})
|
||||
```
|
||||
|
||||
### 使用 Store
|
||||
### 创建 Pinia 实例
|
||||
|
||||
在组件中使用 store:
|
||||
```javascript
|
||||
import { createApp } from 'vue'
|
||||
import { createPinia } from 'pinia'
|
||||
import App from './App.vue'
|
||||
|
||||
const app = createApp(App)
|
||||
const pinia = createPinia()
|
||||
|
||||
app.use(pinia)
|
||||
app.mount('#app')
|
||||
```
|
||||
|
||||
在你的 [Vue](./vue.md) 应用中创建一个 Pinia 实例并将其传递给 [Vue](./vue.md)
|
||||
|
||||
### 热重载 Store
|
||||
|
||||
使用 Vite 时,你可以启用热重载功能:
|
||||
|
||||
```javascript
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(acceptHMRUpdate(useCounterStore, import.meta.hot))
|
||||
}
|
||||
```
|
||||
|
||||
### 使用 Store
|
||||
<!--rehype:wrap-class=row-span-2-->
|
||||
|
||||
在组件中使用 `store`
|
||||
|
||||
```javascript
|
||||
<template>
|
||||
@ -82,17 +94,8 @@ export default {
|
||||
</script>
|
||||
```
|
||||
|
||||
### 热重载 Store
|
||||
|
||||
使用 Vite 时,你可以启用热重载功能:
|
||||
|
||||
```javascript
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(acceptHMRUpdate(useCounterStore, import.meta.hot))
|
||||
}
|
||||
```
|
||||
|
||||
### Modules 模式
|
||||
<!--rehype:wrap-class=row-span-2-->
|
||||
|
||||
Pinia 不使用传统的 Vuex 模块模式。相反,推荐使用独立的 store 文件:
|
||||
|
||||
@ -160,6 +163,7 @@ export function useCounter() {
|
||||
```
|
||||
|
||||
### 插件
|
||||
<!--rehype:wrap-class=col-span-2-->
|
||||
|
||||
Pinia 支持插件。你可以编写插件来扩展 Pinia 的功能:
|
||||
|
||||
@ -179,37 +183,22 @@ const pinia = createPinia()
|
||||
pinia.use(piniaPlugin)
|
||||
```
|
||||
|
||||
### SSR 支持
|
||||
|
||||
Pinia 支持服务端渲染 (SSR)。在你的 SSR 入口文件中创建 Pinia 实例:
|
||||
|
||||
```javascript
|
||||
import { createPinia } from 'pinia'
|
||||
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
const pinia = createPinia()
|
||||
|
||||
app.use(pinia)
|
||||
return { app, pinia }
|
||||
}
|
||||
```
|
||||
|
||||
明白了,让我们来结合 `pinia-plugin-persist` 插件完善 Pinia 备忘清单。
|
||||
|
||||
### 持久化状态
|
||||
<!--rehype:wrap-class=row-span-4 col-span-2-->
|
||||
|
||||
#### 1. 安装 `pinia-plugin-persist`
|
||||
<!--rehype:style=color:#228e6c;font-weight: bold;text-align: left;-->
|
||||
|
||||
```bash
|
||||
npm pinia-plugin-persist
|
||||
```
|
||||
|
||||
#### 2. 配置 Pinia 和 `pinia-plugin-persist`
|
||||
<!--rehype:style=color:#228e6c;font-weight: bold;text-align: left;-->
|
||||
|
||||
在你的入口文件中配置 Pinia 和 `pinia-plugin-persist`。
|
||||
|
||||
**Vue 2 项目:**
|
||||
**⚠️ Vue 2 项目**
|
||||
|
||||
```javascript
|
||||
import Vue from 'vue'
|
||||
@ -247,6 +236,7 @@ createApp(App)
|
||||
```
|
||||
|
||||
#### 3. 创建 Store 并启用持久化
|
||||
<!--rehype:style=color:#228e6c;font-weight: bold;text-align: left;-->
|
||||
|
||||
创建一个 Pinia store,并启用持久化存储。
|
||||
|
||||
@ -278,6 +268,7 @@ export const useUserStore = defineStore('userStore', {
|
||||
```
|
||||
|
||||
#### 4. 使用 Store
|
||||
<!--rehype:style=color:#228e6c;font-weight: bold;text-align: left;-->
|
||||
|
||||
在组件中使用创建好的 store。
|
||||
|
||||
@ -303,6 +294,23 @@ export default {
|
||||
</script>
|
||||
```
|
||||
|
||||
### SSR 支持
|
||||
|
||||
Pinia 支持服务端渲染 (SSR)。在你的 SSR 入口文件中创建 Pinia 实例:
|
||||
|
||||
```javascript
|
||||
import { createPinia } from 'pinia'
|
||||
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
const pinia = createPinia()
|
||||
|
||||
app.use(pinia)
|
||||
return { app, pinia }
|
||||
}
|
||||
```
|
||||
|
||||
明白了,让我们来结合 `pinia-plugin-persist` 插件完善 Pinia 备忘清单。
|
||||
|
||||
### 使用 Vue Devtools
|
||||
|
||||
|
Reference in New Issue
Block a user