Persistent Data Structures - The-Next-Web-Research-Lab/the-next-web-research-lab.github.io GitHub Wiki
title: λΆλ³ μλ£κ΅¬μ‘°μ μμ μλ£κ΅¬μ‘°
λΆλ³ μλ£κ΅¬μ‘°μ μμ μλ£κ΅¬μ‘°
λΆλ³ μλ£κ΅¬μ‘° - Immutable Data Structures
λΆλ³ μλ£ κ΅¬μ‘°λ μμν λ³νμ§ μλ μνλ₯Ό λ§ν©λλ€. λ³νκ° νμν λ μλ‘μ΄ μνλ₯Ό λ§λ€μ΄ λ΄κ³ κ°μ λ³κ²½ν©λλ€.
JSON ν΄λ‘ μ μ¬μ©ν μμ
const clone = obj => JSON.parse(JSON.stringify(obj))
const obj = {
message: 'Hello World',
inner: { count: 1 }
}
const clonedObj = clone(obj);
console.log(obj === clonedObj) // false
console.log(obj.inner === clonedObj.inner) // false
μμ μλ£ κ΅¬μ‘° - Pesistent Data Structures
μμμ±μ μνλ₯Ό μ κ±°νμ§ μκ³ λ³΄μ‘΄νλ κ²μ μλ―Έν©λλ€.
μμ μλ£ κ΅¬μ‘°λ μνμ λ³νκ° νμν λ μλ‘μ΄ μνλ₯Ό λ°ννμ§λ§ μ΄μ μνλ₯Ό κ³μ μ μ§νκ³ μλ μλ£κ΅¬μ‘°μ λλ€. λ€μ μν λ³νκ° νμν μμ μ μ΄μ μ λ§λ€μλ μνμ λμΌνλ©΄ μ΄μ μνλ₯Ό μ¬μ©ν©λλ€.
μμ μλ£ κ΅¬μ‘°λ₯Ό μ¬μ©νλ©΄ λ³νκ° νμν λ μλ‘ λ§λ¦μΌλ‘ λ©λͺ¨λ¦¬ ν¨μ¨μ±μ΄ λΉκ΅μ λ¨μ΄μ§λ λΆλ³ μλ£κ΅¬μ‘°μ λ¨μ μ 보μν μ μμ΅λλ€.
immerJsμ μ¬μ©ν μμ
μνκ° λ³κ²½λμ΄ κ°μ²΄λ₯Ό μλ‘ λ§λ€μμ§λ§ innerλ λ³κ²½μ΄ λμ§ μμκΈ° λλ¬Έμ κΈ°μ‘΄ μνλ₯Ό μ μ§νλ€.
const obj = {
message: 'Hello World',
inner: { count: 1 }
}
const clonedObj = immer.produce(obj, (draft) => {
draft.message = 'Hello'
})
console.log(obj === clonedObj) // false
console.log(obj.inner === clonedObj.inner) // true