๐Ÿ”’ ์ปดํฌ๋„ŒํŠธ ๋‹จ์—์„œ ์ง์ ‘์ ์œผ๋กœ Mutation์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค ๐Ÿค”

Modified: 2022.05.11

์‹ค์ œ ์ฝ”๋“œ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ๋กœ์ง์—์„œ commit์œผ๋กœ ์ง์ ‘์ ์ธ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ

Vuex์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ํ๋ฆ„ ์ƒ Mutation์„ ๊ฑด๋“œ๋ฆฌ๋Š” ๊ฒƒ์€ ์ฝ”๋“œ ์ž‘์„ฑ์˜ ์ผ๊ด€์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

์ƒํƒœ ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„  ๋ชจ๋‘ Actions์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  Mutations์˜ ํ•จ์ˆ˜๋“ค์€ state์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ๋งŒ ์ง„ํ–‰ํ•œ๋‹ค.

Vue 3.0์—์„œ๋Š” Pinia ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋„์ž…์„ ๊ณ ๋ คํ•œ๋‹ค.

๐ŸŽฏ ์ „์—ญ ์ƒํƒœ๋“ค์€ ์ปดํฌ๋„ŒํŠธ ๋กœ์ง์— ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , computed๋ฅผ ๊ฑฐ์ณ ์‚ฌ์šฉํ•œ๋‹ค

Modified: 2022.05.11

์ปดํฌ๋„ŒํŠธ ๋‹จ์—์„œ ์ „์—ญ ์ƒํƒœ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ๋‹ค๋ฉด, this.$store.state.,,,, ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ์ด ๋˜๋Š”๋ฐ์ด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ฝ”๋“œ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

state์— ์ง€์ •ํ•œ ๋ณ€์ˆ˜๋ช…๊ณผ ๋™์ผํ•˜๊ฒŒ ์ปดํฌ๋„ŒํŠธ์˜ computed์— ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

๐ŸŽฏ Props ์ •์˜๋Š” ๊ฐ€๋Šฅํ•œ ์ƒ์„ธํžˆ ์ •์˜ํ•œ๋‹ค

Modified: 2022.05.10

// โŒ wrong
props: ['status']
 
// โญ• correct
props: {
    // js
    status: {
        type: String,
        required: true,
        validator: function (value) {
            return [
               'syncing',
                'synced',
                'version-conflict',
                'error'
            ].indexOf(value) !== -1
        }
    }
    // ts
    data: {
        type: Object as PropType<dataType>
        required: true,
    }
}

prop์˜ ์ •์˜๋Š” ๊ฐ€๋Šฅํ•œ ์ƒ์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค.