2016-05-27 6 views
0

は、私はこれを行うことができますかどうかを確認しようとしている:オブジェクトからプロパティを抽出するためのes6の略語は何ですか?

const {todos} = props.todos; 
    this.todos = todos; 

1行で。

+0

小道具についての考え方を教えてください –

+0

これは不変です。このコードはコンストラクタ内にあります。 –

+1

なぜthis.todos = props.todos;動作しませんか? –

答えて

2

はい、あなたはこのようなものでできた(もしあなたが本当に非構造など):

let todos = (({ todos } = props.todos), this.todos = todos); 

(我々は代入式の内部で、ドスを再バインドするので代わりにconstletを使用する必要があることに注意してください)

これを使用することをおすすめしますか?これは、コードに比べてはるかに判読不能になります。それはあまり知られていないcomma expressionも使用しています。このコードではなく、2つの行を使用しても問題ありません。 ES6の破壊の力はJavaScriptのLOCを減らすのではなく、理解しやすくすることです。例えば、デフォルト値を取る:

let { todos = [] } = props; 

これは読みやすく、その後

let todos = props.todos; 
todos = todos ? todos : []; 

最後に、これは同じようにうまく機能することができます:

this.todos = props.todos.todos; 
+0

です。最初の例は、 'todos 'の前にdestructuringによって' todos'に割り当てているため、一時的なdeadzoneエラーです'初期化が完了しました。 – loganfsmyth

1

あなただけの単一のプロパティを抽出しているので、 、あなたは破壊を落として使用することができます

const todos = props.todos.todos; 
this.todos = todos; 

1行に?

({todos: this.todos} = props.todos); 

または

({todos: {todos: this.todos}} = props); 

しかし、あなたが本当ににも行う可能性があります:あなたは割り当てをしたいが、あなたが行うことができます中間todos値を、必要としないと仮定すると、

const todos = this.todos = props.todos.todos; 
関連する問題