2017-10-03 12 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'ブロックに限定されているので、2番目のコードは意味をなさない。 – 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

関連する問題