ReactでDataTablesを使う


Reactアプリ内でjQueryプラグインのDataTables.jsを使うためのメモ。

ReactとjQueryはあまり相性が良くないので$は最低限使うだけです。

合わせて使う方法からコンポーネント化まで。

React内でjQueryを使う

jQueryプラグインなので$が使えるようにする必要があります。

使っている管理システムでjQueryを追加します。

あとはlet $ = require('jquery');で使えるようになります。

 

index.html内でCDNなどから読み込んでいる場合、コンポーネントではスコープ内で$が見つからないためエラーになります。

‘$’ is not defined no-undef

代わりにwindow.$を使う方法もありますが、ファイル先頭に/* global $ */を追記することで$がそのまま使えるようになります。

DataTablesを設定する

基本的にコンポーネントが準備完了したときにDataTable()を呼び出す。

Reactライフサイクルは以前書いたものを参考にしました。

render()で設定する

render内でTableを作ってしまう方法です。

細かい調整が可能でどんな形のデータでも工夫すれば表示可能です。

DataTable()で設定する

ヘッダやデータはDataTable内で設定可能です。

データが変な形でなければこちらの方がわかりやすい気がします。

columns.dataはデータ配列内のオブジェクトがマップの時([{},{},...])のkeyを入れているので配列の時([[],[],...])は必要ありません。

元データにインデックスがない時はfor文でも書いて追加してもよさそうです。

 

データ表示はこの辺りを参考にしました(ajaxでデータをとってきてそのまま使う方法もあったけど使える状況がかなり限定されてるので試していない)。

コンポーネント化する

複数のテーブルを使いたいときに使いまわせるようコンポーネント化してみます。

とりあえず必要な分だけ適当に。

データ更新時はajax.reload()draw()で出来るように見えるんですが、どうしてもできなかったのでテーブル自体を作り直しています。

 

使う側ではこんな感じです。

これよく考えなくてもReactとの相性悪い。

DataTablesは便利ですがReact寄りのテーブルを使った方がよさそうな気もします。


コメントを残す

メールアドレスが公開されることはありません。