---
# System prepended metadata

title: "\U0001F3C5 Day 26 - Pinia - 建立 store"
tags: [Vue 直播班 - 2022 冬季班]

---

---
tags: Vue 直播班 - 2022 冬季班
---
# 🏅 Day 26 - Pinia - 建立 store

[Pinia](https://pinia.vuejs.org/zh/) 是一個狀態管理工具，可以讓我們方便管理及取用跨元件的資料狀態、方法。

### 載入 Pinia

```javascript=
<!-- Vue CDN -->
<script src="https://unpkg.com/vue@next"></script>

<!-- VueDemi，使用 Pinia 必要的相依套件 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-demi/0.13.11/index.iife.js"></script>
<script>const I = VueDemi; const vueDemi = VueDemi;</script>

<!-- Pinia 網頁版，實戰中還是以 npm 為主，這是比較少見的使用方式 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pinia/2.0.28/pinia.iife.js"></script>
```
> 使用 CDN 的方式載入（需放在 `</body>` 前）
> 運用 Pinia CDN 需再載入相依套件 VueDemi
> （若用 npm 就不需要再額外載入）
>
> 載入後，可以在 JS 中使用 `console.log(Pinia)` 觀看是否有成功載入
> 若有成功印出表示有成功載入 Pinia

接下來，需創建 pinia 實例（需運用 `createPinia()` 方法），並運用 `app.use()` 讓我們在 Vue 的環境中使用 Pinia 的方法
```javascript=
const { createPinia } = Pinia;

const app = Vue.createApp({})

// 創建 pinia 實例
const pinia = createPinia();

app.use(pinia);
app.mount('#app');
```

### 建立 store
我們透過建立 store 來存放要在頁面**共用的資料、方法**。
store 中有三個屬性：state、actions、getters
- state：可以將其想成 Options API 中的 data 屬性，用來存放資料
- actions：可以將其想成 Options API 中的 methods 屬性，用來撰寫方法
- getters：可以將其想成 Options API 中的 computed 屬性，可以取用 state 資料做一些計算

以下為建立 store 大致的結構
```javascript=
// 建立 store 需使用到 Pinia 中 defineStore() 方法
const { defineStore } = Pinia;

// 建立 store
// defineStore() 第一個參數為字串，是這個 store 的 id，可以隨意命名但需唯一（若有其他 store 需再另外命名不同名字）
const exampleStore = defineStore('exampleStoreId', {
  // 有三個屬性：state, actions, getters
    
  // state 為函式，可以使用箭頭函式，主要用來存放資料。
  // 可以將其想成 Options API 中的 data 屬性
  state: () => { 
    return {
      // 資料範例
      courses: ['國文', '英文', '數學'],
      allPassNum: 30,
      ...
    }
  },
  // actions 為物件，主要用來撰寫方法
  // 可以將其想成 Options API 中的 methods 屬性
  actions: {
    ...
  },
  // getters 為物件，讓元件可以取用 state 資料、做一些計算
  // 可以將其想成 Options API 中的 computed 屬性
  getters: {
    ...
  }
});
```
> store 有兩種撰寫方式：Option store、Setup Store
> 這邊一律都是使用 Option store 做範例與練習哦

### 題目
嘗試運用此[模板](https://codepen.io/hexschool/pen/KKBabaJ?editors=1010)（修改 `...` 的部分），練習依照上方流程載入 Pinia 建立 store，並在 store 內建立下方資料：
```
message: 'Pinia Pinia Pinia！'
```
> 可以先不用渲染資料到畫面上


## 回報流程

將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔! 
解答位置請參考下圖（需打開程式碼的部分觀看）

![](https://i.imgur.com/vftL5i0.png)

<!-- 解答：  
https://codepen.io/hexschool/pen/bGjqqpv?editors=1010
-->




回報區
---


|   Discord   |                           CodePen / 答案                           |
|:-----------:|:------------------------------------------------------------------:|
|  威0#6919   | [codepen](https://codepen.io/n0918679182/pen/abjjGez?editors=1012) |
| 楊苡安#2752 | [codepen](https://codepen.io/yi-an-yang/pen/bGjjKNK?editors=1111)  |
| 阿榮#8277|[CodePen](https://codepen.io/codeitaday/pen/KKBBeMJ)|
|KC_8685#9343|[Codepen](https://codepen.io/cathy7411/pen/mdjjKEB)|
|AuroraC#6539|[codepen](https://codepen.io/AuroraC/pen/zYLLaoG?editors=1010)|
|kenki100#0068|[Codepen](https://codepen.io/ken100/pen/GRBBGpM)|
|心幻羽#0056|[Codepen](https://codepen.io/linglingsyu/pen/GRBBGqO?editors=1010)|
| azami#5986 |[Codepen](https://codepen.io/azami/pen/LYBBrRb)|
| LinaChen#1796 |[Codepen](https://codepen.io/LinaChen/pen/LYBBrQy)|
| JackC#0411 |[Codepen](https://codepen.io/key0329/pen/xxJJzJg)|
|威爾#1694|[CodePen](https://codepen.io/WILL_Wu/pen/gOjjKzj)|
|圈圈#4060|[Codepen](https://codepen.io/wjejfczn-the-bold/pen/dyjjKOv?editors=1010)|
| yuyu#6310 |[Codepen](https://codepen.io/yuyu0905/pen/bGjjjGP?editors=1010)|
|masterYan#2480|[Codepen](https://codepen.io/htzwgoqt-the-looper/pen/jOpppbP?editors=1011)|
|kuku#3118|[Codepen](https://codepen.io/mengting-ku/pen/mdjjKNz)|
| Potatolee#7749 |[Codepen](https://codepen.io/potatoleee/pen/XWBBBWp?editors=1011)|
| RainLiao#2261 |[Codepen](https://codepen.io/billpop741/pen/xxJJzMd)|
| Wendy77#8049 |[Codepen](https://codepen.io/Wendy__/pen/WNKKKbe)|
| ㄚ翔#8126 |[codepen](https://codepen.io/engineerjohnson/pen/wvxxxdv?editors=1111)|
| ABOOS#6276 |[codepen](https://codepen.io/guhungyin/pen/OJwwwvJ?editors=1011)|
| JillLee#0809 |[CodePen](https://codepen.io/chi-ling-lee/pen/XWBBPao?editors=1011)|
| YC#2522 | [CodePen](https://codepen.io/YCLu/pen/abjjaYr) |
| 冬天#5215 | [CodePen](https://codepen.io/winter_/pen/RwBBeoL) |
|Hazel.#6020|[CodePen](https://codepen.io/Hazelhsieh/pen/PoBByje?editors=1010)|
|Wendy3#5615|[CodePen](https://codepen.io/wendy03/pen/MWBBqeV)|
|Benson#6763|[Codepen](https://codepen.io/kumashow/pen/QWBBVGq)|
|阿鑫#4346|[CodePen](https://codepen.io/Neil1024/pen/rNrrQjm?editors=1011)|
|YI#0863|[CodePen](https://codepen.io/YI0305/pen/YzjjdKm?editors=1010)|
|Alex#9978|[CodePen](https://codepen.io/datsxzqg-the-selector/pen/zYLLMyW?editors=1011)|
|無名#6427|[CodePen](https://codepen.io/Nomoney/pen/mdjjKxx)|
|Amberhh#2465|[codepen](https://codepen.io/Amberhh/pen/mdjjQJQ)|
|SASIMI#5099|[Codepen](https://codepen.io/sashimi1327/pen/jOppJvV)|
|Tuhacrt#0008|[codepen](https://codepen.io/Tuhacrt/pen/MWBBdoM)|
|yoyo123456#0577|[codepen](https://codepen.io/hungyoyo/pen/bGjxGoG?editors=0011)|
|DIO大人#4776|[codepen](https://codepen.io/oscar-2283/pen/RwBYNvG)|
Zack_P#1805|[codepen](https://codepen.io/tmzazirh-the-animator/pen/qByMOYK?editors=1011)|
| christina#6185 | [Codepen](https://codepen.io/chrisc0210/pen/poZOgwp) |
|Cheryl#4007|[Codepen](https://codepen.io/Cheryl-Hsu/pen/QWBVjYK?editors=0010)|
|Mia小福#4473|[Codepen](https://codepen.io/a0950271/pen/BaPOzQe?editors=1010)|
|aki|[stackblitz](https://stackblitz.com/edit/github-twn6l7?file=src%2FApp.vue)|
| albee#9121 |[Codepen](https://codepen.io/albee-chang/pen/BaPOvNo?editors=1012)|
| mandylai#4055 |[Codepen](https://codepen.io/mandy-lai-2/pen/vYaaamv)|
| 米米#1824 |[Codepen](https://codepen.io/Jameshsu0407/pen/VwBGqGw?editors=1010)|
| 黑白兔#0684 |[Codepen](https://codepen.io/johnny329/pen/ZEjMVyr)|
|int#7518|[Codepen](https://codepen.io/intHuang/pen/zYLJevQ?editors=0010)|
|薯餅#3581|[Codepen](https://codepen.io/ColdingPoTaTo/pen/PoBdLbX)|
|hannahTW#2224|[Codepen](https://codepen.io/hangineer/pen/VwBELMm?editors=1011)|
|MengLin#3001|[Codepen](https://codepen.io/aacj2642/pen/jOpeVWx?editors=1010)|
|Kimi #9564|[Codepen](https://codepen.io/kimihu91/pen/WNKgYMb)|
|ABOOS#6276|[Codepen](https://codepen.io/guhungyin/pen/XWByjbg?editors=1011)|
|柚子#3958|[Codepen](https://codepen.io/as6625998/pen/WNKYERQ?editors=1011)|
|泊岸#3466|[Codepen](https://codepen.io/qoq77416416/pen/wvxQOKj?editors=1011)|
|jacky010080#0880|[CodePen](https://codepen.io/Yen-Jung-Chen/pen/abjQxqq?editors=1011)|
|Yiru#0236|[Codepen](https://codepen.io/yiru94/pen/GRBPKMq?editors=1010)|
|GOD_QWERTYUIOPLKJLKLLOINJ_MASTER#4922|[Codepen](https://codepen.io/sho666/pen/eYjbXgo?editors=1011)|
|Chi#7605|[CodePen](https://codepen.io/YoChi84/pen/qByLvqO)|
|Rena#6249 |[Codepen](https://codepen.io/aureate0116/pen/gOjZJpY)
|helena#8461 |[Codepen](https://codepen.io/helena27/pen/bGjOXBJ?editors=1011)
|Hilda#7085|[Codepen](https://codepen.io/vwquikad-the-vuer/pen/poZqMLg)|
|小木馬#8760|[Codepen](https://codepen.io/wmmtbcsd/pen/oNMmvrN)|
|ssozr#4680|[codepen](https://codepen.io/ssozr/pen/qBygZyw?editors=1011)|
|Shuo#1596|[codepen](https://codepen.io/chiangchungshuo/pen/qBygREW?editors=1010)|
|Knock59487#9114|[CodePen](https://codepen.io/Zack88/pen/eYjxMLw?editors=1011)|
|suihsilan#9485|[CodePen](https://codepen.io/suihsilan/pen/YzjgWeW?editors=1010)|
|大衛#4869|[CodePen](https://codepen.io/exnsrpjc/pen/OJwqEYM?editors=0011)|
|hungya#0773|[CodePen](https://codepen.io/hungya777/pen/YzjoXBv?editors=1010)|
|出示了阿伯#9923|[CodePen](https://codepen.io/BradpittLai/pen/abjgNMw?editors=1010)|
|阿蘇#8531|[CodePen](https://codepen.io/susu3131/pen/MWBNpYO?editors=0011)|
|PayRoom#8328|[CodePen](https://codepen.io/water38198/pen/vYzBYBp)
|Yuna Huang#2692|[CodePen](https://codepen.io/Yuna1002/pen/JjajzBW?editors=0010)
|yaru#6308|[CodePen](https://codepen.io/lszaietc/pen/dyqoRJp?editors=1011)|
|Asher Xu#6308|[CodePen](https://codepen.io/kirakira72/pen/jOvPGZw)|
|yoyo#1003|[CodePen](https://codepen.io/pen/rNZLxWo)|
|Mylène#2481|[CodePen](https://codepen.io/hamajibashi/pen/KKxMmmj)|
|Judy Wei#6103|[CodePen](https://codepen.io/Judy0718/pen/jOvBjPK)|
|Eason#7884|[CodePen](https://codepen.io/ASLEO/pen/KKGVWYm)|
| Jenny真#7532 | [CodePen](https://codepen.io/wei-chen-wu/pen/poxNYVW) |
| Eileen#6454 | [CodePen](https://codepen.io/Eileen-io/pen/YzJZKmv) |