46
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Material UI使ってみた

Posted at

Material UIとは

Material UI

GoogleのマテリアルデザインをReactベースで使えちゃう今時なCSSライブラリ
おっ、これかっちょいいと思って少し触ってみました。

日本語の解説記事とかが見当たらなかったので簡単に紹介します。

Get started

この辺で解説されているので、公式のドキュメントとともに参考にする感じで。

Componentの使い方とか

大別して3種類のAPIがあります。

  • Props
  • Events
  • Methods

名前の通りそれぞれ、

  • reactコンポーネントのrenderで要素を生成する際に利用できるprop
  • 要素で発生するhtmlイベント(onChange,onClickなど)
  • 要素で使える関数
    になります。

使い方を見ていきます。

Props

これはそのまんま。

  render() {
    return (
      <DatePicker
        hintText="Landscape Dialog"
        mode="landscape"
        autoOk={true}
        defaultDate={new Date()}
        formatDate={(dt) => `${dt.getFullYear()}/${dt.getMonth() + 1}/${dt.getDate()}`} />

    );

注:ES6構文使ってます

公式のドキュメントで、propの名前と型が載っているので、その通りに記載していきます。
関数なんかも使ったりします。

Events

イベントハンドルする関数を定義して、それをプロパティに入れます。

let hogeDropDownMenu = React.createClass({
  _handleOnChange(e, index, item) {
    alert(item.text);
  },
  render() {
    let items = [{payload: 1, text: 'item1'}, {payload: 2, text: 'item2'}]
    return (
      <DropDownMenu onChange={this._handleOnChange} menuItems={items} />
    );
  }
});

この例ならドロップダウンの選択が切り替わった時にアラートが動きますね。

Methods

Componentのrefを取得して利用できる関数です。

let fugaTimePicker = React.createClass({
//略
  getTime() {
    return this.refs.TimePicker.getTime();
  },
  render() {
    return (
      <TimePicker ref="TimePicker" />
    );
  }
});

同コンポーネント内で利用するならこんな感じでthis.refs.TimePickerみたいに使えます。
親コンポーネントで使うならんな感じで関数をリレーしてやるといいんでしょうか。

CSSの使い方とか

ここに書いてあるのが全てなので特に解説することがないです。

インラインでスタイルを上書きできるようだけど、イマイチ挙動が怪しかったですね。
DatePickerでwidth指定しても、大枠のdiv要素だけ指定されてて実際の見た目として出てくる日時の部分が元のままの幅だったり。

所感

一生ラッパを書かされるのでちょっとめんどくさい感じでした。
APIが足りてなくてそれを補う必要があるってのも含めて。(text fieldsとかにはgetValue()みたいなのがあるのに、それがない要素(主にDropDownMenu)はevent拾って値を持たせて・・・とかしなきゃいけなくて、うーん・・・)

他のところは大体見たまんま使わせてくれるし、ナウなヤングっぽいUIをReactと親和性高くかけるので、そこが良いと思うなら頑張って使う感じでしょうか。

と言っても自分自身Reactを使って何か書いた経験が少ないので、これがReactでの一般的なことなのだって話(もしくはそんなことしなくても楽に書けるとか)だったらごめんなさいしなくちゃですが。

ということでMaterial UIの紹介でした。

46
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?