# ์คํ๋ ๋ ์คํผ๋ ์ดํฐ(Spread Operator)
์คํ๋ ๋ ์คํผ๋ ์ดํฐ๋ ํ๊ธ๋ก ๋ฒ์ญํด๋ณด๋ฉด ํผ์นจ ์ฐ์ฐ์ ์ ๋๋ก ๋ณผ ์ ์์ต๋๋ค. ์คํ๋ ๋ ์คํผ๋ ์ดํฐ๋ ํน์ ๊ฐ์ฒด ๋๋ ๋ฐฐ์ด์ ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ฒด, ๋ฐฐ์ด๋ก ๋ณต์ ํ๊ฑฐ๋ ์ฎ๊ธธ ๋ ์ฌ์ฉํฉ๋๋ค. ์ฐ์ฐ์์ ๋ชจ์์ ...
์ด๋ ๊ฒ ์๊ฒผ์ต๋๋ค.
# ์คํ๋ ๋ ์คํผ๋ ์ดํฐ ์ฌ์ฉ๋ฒ
๋ฐ๋ก ํ๋ฒ ์ฝ๋๋ก ์ดํด๋ณผ๊น์?
// obj ๊ฐ์ฒด๋ฅผ newObj ๊ฐ์ฒด์ ๋ณต์
var obj = {
a: 10,
b: 20
};
var newObj = {...obj};
console.log(newOjb); // {a: 10, b: 20}
// arr ๋ฐฐ์ด์ newArr ๋ฐฐ์ด์ ๋ณต์
var arr = [1,2,3];
var newArr = [...arr];
console.log(newArr); // [1, 2, 3]
์ ์ฝ๋๋ค์ ๋ชจ๋ ์คํ๋ ๋ ์คํผ๋ ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ํน์ ๊ฐ์ฒด, ๋ฐฐ์ด์ ๊ฐ์ ๊ฐ๊ฐ ์๋ก์ด ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๋ณต์ ํ๋ ์ฝ๋์ ๋๋ค. ์ด๋ ๊ฒ ์คํ๋ ๋ ์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
# ๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ๋ณต์ ๋ฐฉ์
์์์ ์ดํด๋ณธ ์ฝ๋์์ ์คํ๋ ๋ ์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ผ๋ก๋ง ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
// ๊ฐ์ฒด์ ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ
var obj = {
a: 10,
b: 20
};
var newObj = {
a: obj.a,
b: obj.b
};
console.log(newObj); // {a: 10, b: 20}
// ๋ฐฐ์ด์ ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ
var arr = [1,2,3];
var newArr = [arr[0], arr[1], arr[2]];
console.log(newArr); // [1, 2, 3]
๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ, ์๋ก์ด ๊ฐ์ฒด์ธ newObj
์ ์๋ก์ด ์์ฑ๋ค์ ์ ์ธํ๊ณ ๊ฐ ์์ฑ์ obj
์ ์์ฑ๋ค์ ์ผ์ผ์ด ์ ๊ทผํด์ ๋์
ํด์ค์ผ ํฉ๋๋ค. ๋ฐฐ์ด newArr
์ ๊ฒฝ์ฐ์๋ ๊ธฐ์กด ๋ฐฐ์ด arr
์ ์ธ๋ฑ์ค์ ์ผ์ผ์ด ์ ๊ทผํ์ฌ ์๋ก์ด ์์๋ฅผ ๋ง๋ค์ด์ค์ผ ํฉ๋๋ค.
์ ์ฝ๋์์ ์ดํด๋ณผ ์ ์๋ฏ์ด ์คํ๋ ๋ ์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํ์ดํํด์ผ ํ๋ ์ฝ๋์ ์์ด ํ์ฐํ ์ค์ด๋ญ๋๋ค.
# ๋ทฐ์์ค์ ์ ์ฉํด๋ณธ ์คํ๋ ๋ ์คํผ๋ ์ดํฐ
๋ทฐ์์ ์คํ๋ ๋ ์คํผ๋ ์ดํฐ๊ฐ ๊ฐ์ฅ ์ ํ์ฉ๋๋ ๋ถ๋ถ์ ๋ทฐ์์ค(Vuex)์ ํฌํผ ํจ์์ ๋๋ค. ๋ทฐ์์ค์ ํฌํผ ํจ์๊ฐ ์ต์ํ์ง ์์ ๋ถ๋ค์ Vuex ์์ํ๊ธฐ 2 (opens new window)๊ธ์ ์ฐธ๊ณ ํ์ธ์. ์ด์ฐจํผ ์ฌ๊ธฐ์ ์ค์ํ ๋ถ๋ถ์ ์คํ๋ ๋ ์คํผ๋ ์ดํฐ๊ฐ ์ด๋ค ์์ผ๋ก ๋ทฐ์์ ํ์ฉ๋๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ผ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
import { mapGetters } from 'vuex';
export default {
computed: {
...mapGetters(['getStrings', 'getNumbers', 'getUsers']),
anotherCounter() {
// ..
}
}
}
์ ์ฝ๋์์ mapGetters
๋ผ๋ ํฌํผ ํจ์ ์์ ์คํ๋ ๋ ์คํผ๋ ์ดํฐ์ธ ...
๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ๋ง์ฝ ...
๋ฅผ ์ฌ์ฉํ์ง ์์๋ค๋ฉด, computed ์์ฑ ํจ์์๋ ๋ทฐ์์ค์ getters ์์ฑ ํจ์๋ค๋ง ์ ์ํ ์ ์์์ ๊ฒ์
๋๋ค. ๋ฌด์จ ๋ง์ธ์ง ์ดํด๊ฐ ์๊ฐ์ ๋ค๊ตฌ์? ๊ทธ๋ผ ์์ ์ฝ๋์์ ...
๋ฅผ ๋ ํ์ด๋ณผ๊ฒ์.
import { mapGetters } from 'vuex';
export default {
computed: {
getStrings() {
// ..
},
getNumbers() {
// ..
},
getUsers() {
// ..
},
anotherCounter() {
// ..
}
}
}
๋ง์ฝ ...
๋ฅผ ์ฐ์ง ์์๋ค๋ฉด anotherCounter()
๋ฅผ ์ถ๊ฐ๋ก ์ ์ํ ์ ์์์ ๊ฒ์
๋๋ค. ...
๋ก ํ์ด์ ์์ ๊ฐ์ด ์ฝ์
์ ํด์คฌ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ๋ก computed ์์ฑ ํจ์๋ฅผ ์ ์ํ ์ ์๊ฒ ๋์์ต๋๋ค.