reactλ‘ κ°λ°νλ©΄μ λ§€μ° μμ£Ό λ΄€λ { ...props }μ κ°μ μμ¬μ°μ°μ ꡬ문!
μ μ μ°μ΄μ΄ 3κ° μ¬μ©νλ μμ¬μ°μ°μ(Rest Parameter)μ λν΄ μμ보λ€κ°, λκ°μ΄ ...μ μ°λ μ κ°κ΅¬λ¬Έ(Spread syntax)μ λν΄μλ μ 리ν΄λ³΄λ € νλ€.
λμ ꡬ문μ λκ°μ§λ§ μν μ κ±°μ μ λ°λλΌκ³ λ³Ό μ μλ€.
μμ¬ μ°μ°μ ( Rest Parameter )
λ΄κ° μ μ©νλ MDNμμλ μμ¬ μ°μ°μλ₯Ό λ€μκ³Ό κ°μ΄ μ€λͺ νκ³ μλ€. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/rest_parameters
ν¨μμ λ§μ§λ§ νλΌλ―Έν°μ μμ ... λ₯Ό λΆμ¬ (μ¬μ©μκ° μ 곡ν) λͺ¨λ λλ¨Έμ§ μΈμλ₯Ό "νμ€" μλ°μ€ν¬λ¦½νΈ λ°°μ΄λ‘ λ체ν©λλ€. λ§μ§λ§ νλΌλ―Έν°λ§ "Rest νλΌλ―Έν°" κ° λ μ μμ΅λλ€. |
κ·Έλ°λ° 보λκΉ, κΌ λ°°μ΄μ΄ μλλλΌλ JSON κ°μ ννλ Objectλ‘λ λ°νν΄ μ£Όλ κ² κ°λ€. μμλ‘ νμΈν΄λ³΄μ.
μμ 1 - λ°°μ΄λ‘ λ°ν
const random=[3,48,107]
const randomRest=[...random]
console.log("random",random);
console.log("randomRest",randomRest);
randomRest[0]=30;
console.log("random",random);
console.log("randomRest",randomRest);
μμ¬ μ°μ°μλ κ°μ 볡μ¬νμ¬ λ°νν΄μ£Όλ κ²μ΄κΈ° λλ¬Έμ μλμ randomμ κ°μ΄ λ³νμ§ μμμ νμΈν μ μλ€.
μμ 2 - Json μ Objectλ‘ λ°ν
var address={
country:"Korea",
city:"Seoul",
add1:"Gangnam-gu",
add2:"Sinsa-dong 12",
add3:"345 Street"
}
const {country, city, ...detail} = address
console.log("address", address);
console.log("detail", detail);
μ£Όμμ 보λ₯Ό λ΄κ³ μλ address κ°μ²΄λ₯Ό country, city ν€λ‘ λΆν νκ³ , λλ¨Έμ§ μμ¬ ν€λ€μ detailμ΄λΌλ λ³λμ λ³μλ‘ μ μ₯ν΄μ€λ€.
보λ€μνΌ Json κ°μ²΄λ κΌ λ°°μ΄μ΄ μλλλΌλ detailμ Objectλ‘ λ°νν΄μ£Όκ³ μλ κ²μ λ³Ό μ μλ€.
μ΄λ₯Ό μμ©ν΄μ ν¨μμ λ°μ΄ν°λ₯Ό μ μ©νκ² λ€λ£° μ μμ κ² κ°λ€.
μ κ°κ΅¬λ¬Έ(Spread syntax)
MDNμμμ μ€λͺ μ λ€μκ³Ό κ°λ€.
μ κ° κ΅¬λ¬Έμ μ¬μ©νλ©΄ λ°°μ΄μ΄λ λ¬Έμμ΄κ³Ό κ°μ΄ λ°λ³΅ κ°λ₯ν λ¬Έμλ₯Ό 0κ° μ΄μμ μΈμ (ν¨μλ‘ νΈμΆν κ²½μ°) λλ μμ (λ°°μ΄ λ¦¬ν°λ΄μ κ²½μ°)λ‘ νμ₯νμ¬, 0κ° μ΄μμ ν€-κ°μ μμΌλ‘ κ°μ²΄λ‘ νμ₯μν¬ μ μμ΅λλ€. |
μμλ₯Ό λ°°μ΄ λλ κ°μ²΄λ‘ λ°νν΄μ£Όλ μμ¬μ°μ°μμ λ¬λ¦¬, λ°°μ΄μ μμλ‘ νμ΄μ£Όλ(Spread) μν μ νλ€.
μμ 1 - λ°°μ΄μμμ Spread
3κ°μ μμκ° μλ λ°°μ΄μ νλμ© ν¨μμ νλΌλ―Έν°λ‘ λ£μ΄μ£Όκ³ μ ν λ μ¬μ©ν μ μλ€. λ€μμ μ½λλ₯Ό μ°Έκ³ νμ.
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
console.log(sum.apply(null, numbers));
sumμ x,y,z μΈ κ°μ νλΌλ―Έν°λ₯Ό λ°μ ν©ν κ°μ λ°νν΄μ£Όλ ν¨μμ΄λ€.
κ·Έλ¦¬κ³ numbersλ 1,2,3 μΈ κ°μ μμλ₯Ό λ°°μ΄λ‘ κ°μ§κ³ μλ ν¨μμ΄λ€. μ΄ μΈ κ°μ κ°μ λ°λ‘ λ£κ³ μΆμΌλ©΄,
sum(numbers[0],numbers[1],numbers[2])μ κ°μ μ‘°κΈμ λΆμ‘±ν μ½λλ,
.apply() ν¨μλ₯Ό μ΄μ©ν΄μΌ νλ€.
κ·Έλ μ§λ§ spread ꡬ문, ...numbersλ₯Ό μ΄μ©νλ©΄ μ½κ² λ°°μ΄ μμλ₯Ό νμ΄μ€μ μλ€.
μμ 2 - λ¬Έμμ΄μμ Spread ꡬ문
λ¬Έμμ΄ κ°μ μ‘°ν©μ push(), slice(), concat()λ±μ μ΄μ©ν΄μΌ νλ©° κ·Έ κ°μ λ°λ‘ μ μ₯ν΄μΌ νλ λ± ν¨μμ λ³μ μ¬μ©μ λΆνΈν¨μ΄ λ§μλ€. μ΄λ₯Ό Spread ꡬ문μ ν΅ν΄μ κ°κ²°νκ² λ§λ€ μ μλ€.
var parts = ['shoulders', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes'];
console.log(lyrics);
μ€κ°μ ν©μΉκΈ° μν΄μ μ¬μ©ν΄μΌνλ sliceλ concat λ±μ ν¨μ μμ΄ κ°λ¨νκ² ννμ΄ κ°λ₯νλ€.
JS, JavaScript, μλ°μ€ν¬λ¦½νΈ, μ κ°κ΅¬λ¬Έ, ... , μμ¬μ°μ°μ, Rest μ°μ°μ, Rest Parameter , React , 리μ‘νΈ , React Native , 리μ‘νΈ λ€μ΄ν°λΈ , ... syntax
λκΈ