« ^ »

Reactでドラッグアンドドロップイベントをハンドルする

所要時間: 約 1分

Reactでファイルのドラッグアンドドロップを行い、そのイベントによって関数を呼び出す方法を確認した。

Reactでドロップイベントを取得するにはonDropに関数を渡す

ドロップイベントで関数を呼びだすには、その要素のonDropに関数を渡せば良い。 以下にtextareaにファイルをドロップするとalertを発生し、コンソールログにファイルの内容を出力する例を示す。

import React from 'react';
import ReactDOM from 'react-dom';
import logo from './logo.svg';
import './App.css';

class App extends React.Component {
  async handleDrop (e) {
    e.stopPropagation();
    e.preventDefault();
    for (var i = 0; i < e.dataTransfer.files.length; i++) {
      console.log(e.dataTransfer.files);
      const file = e.dataTransfer.files.item(i);
      console.log(await file.text());
    }
    e.dataTransfer.clearData();
  }

  render () {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <p>
            Edit <code>src/App.js</code> and save to reload.
          </p>
          <a
            className="App-link"
            href="https://reactjs.org"
            target="_blank"
            rel="noopener noreferrer"
          >
            Learn React
          </a>
	  <textarea onDrop={this.handleDrop} />
        </header>
      </div>
    );
  }
}


export default App;

もしファイルをアップロードする場合、このハンドラ関数でアップロード処理を実装する。