2017-10-03 6 views
1

나는 reactjs을 쓰고 있으며 The Power Of Not Mutating Data을 사용하고 싶습니다. 아래의 코드 this.state.messages['hydra:member']은 객체의 배열이며이 코드에서 messagesthis.state.messages['hydra:member'] 또는 새 배열에 대한 참조임을 알고 싶습니다. 돌연변이가 있다면 this.state.messages['hydra:member']가 바뀌겠습니까? 이것에 대해 데이터의 변조 및 배정 해제의 힘

let {'hydra:member': messages = []} = this.state.messages; 

무엇을 : 당신이 메시지 배열을 사용할 때

if(this.state.messages['hydra:member'] !== undefined) { 
    let messages = this.state.messages['hydra:member']; 
} 
+0

"* 및 사본 *"- 무엇을 의미합니까? – Bergi

+0

'let' 변수가 아무것도하지 않는'if' 블록에 국한되어 있기 때문에 두 번째 코드는 이해가되지 않습니다. – Bergi

+1

정확히 이것을하려고 할 때, 문제의 컨텍스트는 무엇입니까? – adz5A

답변

0

지금

if(this.state.messages['hydra:member'] !== undefined) { 
    let messages = JSON.parse(JSON.stringify(this.state.messages['hydra:member'])); 
    //use messages here 
} 

을 다음과 같이 할 수 this.state.messages['hydra:member']의 전체 복사본을 만들려면, 당신은되지 않습니다 상태를 돌연변이.

+0

나는 이것을 알고있다. 그러나 나는 이것을 "Assignment Destructuring"으로 할 수 있는지 알고 싶다. –

+0

꽤 많은 비용이 드는 복사본입니다. – Ouroborus

+0

@Ouroborus 나는 갈거야 https://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-deep-clone-an-object-in-javascript/5344074#5344074 단점 : 필자는 다른 솔루션과 비교하여 솔루션의 효율성을 개인적으로 테스트하지 않았습니다. – palsrealm