2017-08-17 7 views
3

Reactコンテナ内で配列を並べ替えるために、解体解を使いたいと思っていました。ES6とReactを使って配列を分解して並べ替える

Uncaught (in promise) TypeError: Cannot set property '#<Object>' of undefined

私は本当にない:私は、私はそのラインで得たundefined 誤りがありましたレンダリングで、それを記録したり使用中のコンソールにしようa1 = ['hello', 'hi', 'hola']

componentDidMount() { 
    const { a1 } = this.props 
    this.a2 = [] 
    [a2[2], a2[0], a2[1]] = a1 --> this line give an error!! 
    console.log('new ordered array', a2) // ['hola', 'hello', 'hi'] --> this print properly my new array 
} 

配列を考えると 私はconsole.logで正しく値を印刷することができますが、実際にコード内で使用しようとするとうまくいかないのです。 これは多分何かのリアクションサイクル関連ですか? 私の状態で使ってみましたが、同じエラーがありました。

+0

エラーのある行を見てください、あなたはドットを持っている( '.')コンマは – user3151902

+0

でなければならないことがありますdesconstructingではなく、destructuringと呼ばれる。 – PeterMader

+0

ありがとう@PeterMader –

答えて

5

は自動セミコロン挿入があなたをダウンすることができますとき、これはまれなケースの一つであるため、このラインはあなたにエラーを与えるがあります。 (または[]で改行を開始しないでください。そうしないと、それは前の行の続きとみなされ、[または(をプロパティアクセス操作または関数呼び出しとして扱います。

これは動作します:

this.a2 = []; 
[a2[2], a2[0], a2[1]] = a1 

またはこの:

this.a2 = [] 
;[a2[2], a2[0], a2[1]] = a1 
+0

があります。 問題は "私のlintはセミコロンを追加することができません - フロントエンドの開発、とても楽しいです:)私はとにかく既に別の方法で解決しましたが、少なくとも今私は知っています、ありがとう! –

0

.の代わりに、この行の,[a2[2], a2[0]. a2[1]] = a1 --> this line give an error!!

+0

あなたは正しいですが、ここで質問を間違えてしまいます。私の実際のコードにはカンマ –

関連する問題