# μŠ€ν† μ–΄ μ„ μ–Έ

ν”Όλ‹ˆμ•„μ˜ κΈ°λ³Έ 문법을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같이 μŠ€ν† μ–΄λ₯Ό μ„ μ–Έν•©λ‹ˆλ‹€.

// ./store/index.js
import { defineStore } from 'pinia'

export const useStore = defineStore('app', {
  state: () => {
    return {
      message: 'Hello Pinia'
    }
  }
})

μœ„ μ½”λ“œλŠ” store 폴더 μ•„λž˜μ— index.js λΌλŠ” νŒŒμΌμ„ λ§Œλ“€κ³  ν”Όλ‹ˆμ•„μ˜ κΈ°λ³Έ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. ν”Όλ‹ˆμ•„ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ œκ³΅ν•˜λŠ” defineStore()λ₯Ό μ΄μš©ν•΄μ„œ 첫 번째 인자둜 μŠ€ν† μ–΄μ˜ 이름을 μ„ μ–Έν•˜κ³  두 번째 인자둜 μŠ€ν† μ–΄μ˜ λ‚΄μš©μ„ μ •μ˜ν•©λ‹ˆλ‹€.

μŠ€ν† μ–΄μ˜ λ‚΄μš©μ—λŠ” messageλΌλŠ” μƒνƒœ(state)λ₯Ό ν•˜λ‚˜ μ •μ˜ν–ˆμŠ΅λ‹ˆλ‹€.

TIP

stateλ₯Ό μ •μ˜ν•  λ•Œ 객체 ν˜•νƒœκ°€ μ•„λ‹ˆλΌ ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ·°μ—‘μŠ€μ—μ„œλŠ” 객체 ν˜•νƒœμ™€ ν™”μ‚΄ν‘œ ν•¨μˆ˜ ν˜•νƒœκ°€ λͺ¨λ‘ μ§€μ›λ˜μ§€λ§Œ ν”Όλ‹ˆμ•„μ—μ„œλŠ” ν™”μ‚΄ν‘œ ν•¨μˆ˜ ν˜•νƒœλ‘œλ§Œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€.

# μŠ€ν† μ–΄ μ‚¬μš©

μ•žμ—μ„œ μ„ μ–Έν•œ μŠ€ν† μ–΄λ₯Ό μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ‚¬μš©ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

μœ„ μ½”λ“œλŠ” App μ»΄ν¬λ„ŒνŠΈμ—μ„œ μŠ€ν† μ–΄μ˜ μƒνƒœλ₯Ό 화면에 ν‘œμ‹œν•œ μ½”λ“œμž…λ‹ˆλ‹€. ν”Όλ‹ˆμ•„λŠ” 이처럼 μŠ€ν† μ–΄λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ μ»΄ν¬μ§€μ…˜ API인 setup API을 κΌ­ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. setup() μ•ˆμ—μ„œ λ°˜ν™˜λœ storeλŠ” ν…œν”Œλ¦Ώ ν‘œν˜„μ‹μ—μ„œ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ— store.message의 μ΅œμ’… κ²°κ³ΌλŠ” μ•žμ—μ„œ μ •μ˜ν•œ 'Hello Pinia'κ°€ λ©λ‹ˆλ‹€.

# μŠ€ν† μ–΄ μž‘λͺ…법

ν”Όλ‹ˆμ•„μ˜ μŠ€ν† μ–΄λ₯Ό μž‘λͺ…ν•  λ•ŒλŠ” μ•„λž˜ κ·œμΉ™μ„ μ°Έκ³ ν•©λ‹ˆλ‹€.

  1. defineStore()의 첫 번째 μΈμžλŠ” λ‹€λ₯Έ μŠ€ν† μ–΄λ“€κ³Ό κ΅¬λΆ„λ˜λŠ” μœ λ‹ˆν¬ν•œ 값이어야 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄, μŠ€ν† μ–΄λ₯Ό 2개 등둝할 λ•Œ 이름이 겹치면 μ•ˆλ©λ‹ˆλ‹€.
Β 







Β 







export const useStore = defineStore('app', {
  state: () => {
    return {
      message: 'Hello Pinia'
    }
  }
})

export const useUserStore = defineStore('user', {
  state: () => {
    return {
      user: { name: '캑팑' }
    }
  }
})
  1. defineStore()λ₯Ό λ°›λŠ” λ³€μˆ˜μ˜ 이름은 useXXXStore으둜 μž‘λͺ…ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄, λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
useAppStore
useUserStore
useCounterStore