【react-material-Ui】ListとDialogを組み合わせて動的に削除するコンポーネント

window.confirmは簡単な実装でOK/キャンセルの処理を作ることが出来ます。しかしその汎用性に反し対応していないosが多く

ちゃんと発動するか不明な点が多いことと、ESLintで引っかかることもありストア向けのアプリには不向きです。

最初見つけた時はこれめっちゃ便利じゃん他のアプリにも入れたろと考えましたが

reactではandroidやiosでwebviewを介してみるので爆弾扱いされているみたいですね。

てな訳で素直にdialogを使いましょうということにしました。

material-uiではスタイリッシュなコンポーネントがずらりと揃っていますが今開発しているアプリでも

使われているmaterial-uiのdialogコンポーネントを使うことにしました。(こっちのほうがずっとかっこいいです)

 

</pre>
choice(i){
this.setState({index: i});
this.setState({deleteMessage : "削除しますか?"})
this.setState({deleteOpen: true});
}
delete() {
const i = this.state.index;
this.state.count.splice(i,1);
this.setState({count: this.state.count});
this.DialogClose();
}
deleteDialogClose() {
this.setState({deleteOpen: false});
}

render() {
const i = this.state.count;
const reText = i;
const deleteActions = [
<FlatButton
label="削除する"
primary={true}
onTouchTap={this.delete}
/>,
<FlatButton
label="キャンセル"
primary={true}
onTouchTap={this.deleteDialogClose}
/>,
];
return (
<Dialog
actions={deleteActions}
modal={true}
open={this.state.deleteOpen} >
{this.state.deleteMessage}
</Dialog>
)
}
<pre>

 

render内でダイアログのオプションを設定してreturn内でそのオプションを取り込んで実際にトリガーが発火

した時にダイアログの処理内容を引数に合わせて変えていくイメージで作りました。

最初はどこで発火するんだ?と迷子状態ですが、this.setState({Open: true});でon状態になるとダイアログが

起動することが分かったので一安心。

 

とりあえずthis.setState({Open: true});で発火することを覚えておけば適当な関数にこれを設置して

さきほど切り分けた処理を実際に試すことができるみたいですね、覚えておきます。

ちなみにメッセージはthis.setState({Message : “hoge!!”})で変えられますのでそちらもお見知りおきを・・・。

 

使ってみた感想:良かったです。従来のjsのダイアログより優しい・安心のmaterial-uiブランドなので視覚的に優しいと

優しい尽くしでした。とくに凝ったデザインにしないならば第一におすすめします。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG