2017-05-02 8 views
4

私は思ったことをやろうとしていますが、簡単な作業です。ユーザーがボタンをクリックすると、ループしてクライアントマシンにダウンロードしたいURLの配列があります。ファイルURLの配列をループし、それぞれのファイルをダウンロードしてください。

今私は、ボタンと、ループしてダウンロードしたい状態のURLの配列を含む親コンポーネントを持っています。何らかの理由で、私が今やっているやり方は、配列の内容のすべてではなく、ファイルのうちの1つだけをダウンロードするようになっています。

リアクション内で正しくこれを行うにはどうすればよいですか?

handleDownload(event){ 
     var downloadUrls = this.state.downloadUrls; 
     downloadUrls.forEach(function (value) { 
      console.log('yo '+value) 
     const response = { 
       file: value, 
     };     
      window.location.href = response.file; 

     }) 
    } 
+0

なぜ、downloadUrlsでsliceを呼び出していますか? –

+0

私の状態にURLの配列があります。 downloadUrls = ["http:// file1"、 "http:// file2"、 "http:// file3"]。ユーザーは、親「ダウンロードしたすべてのファイルをダウンロード」ボタンをクリックする前に、ダウンロードしたいファイルのチェックボックスを選択することができます。 – JDun

+0

それは答えではありません。スライスの使用またはポイントは何ですか?あなたはそこで何を達成しようとしていますか? –

答えて

1

私は、各ファイルをダウンロードするのを少し待つためにsetTimeoutを使用します。

handleDownload(event){ 
    var downloadUrls = this.state.downloadUrls.slice(); 
    downloadUrls.forEach(function (value, idx) { 
     const response = { 
      file: value, 
     }; 
     setTimeout(() => { 
      window.location.href = response.file; 
     }, idx * 100) 
    }) 
} 

Chromeでは、複数のファイルのダウンロードを求めるアクセス許可も表示されます。

関連する問題