Onsen UI を使ってアイコンボタンを設置する際に、公式サイトに載っているサンプルコードが動かなかったので、その代替方法についてまとめ。
時間があったら、ちゃんと正規の方法でも実装できるように修正したいと思います。
で、今回使ったのは、以前も紹介した Font Awesome です。
React での導入方法については、以前のブログを参照ください。
Font Awesome のインストールが終わったら、あとは下記のように実装します。
import React, { Component } from 'react'; import { List, ListItem, Button, Page, Toolbar, ToolbarButton } from 'react-onsenui'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faBars, faSync } from '@fortawesome/free-solid-svg-icons'; import 'onsenui/css/onsenui.css'; import 'onsenui/css/onsen-css-components.css'; class ListPage extends Component { render() { return ( <div> <Page renderToolbar={() => <Toolbar> <div className="left"> <ToolbarButton> <FontAwesomeIcon icon={faBars} /> </ToolbarButton> </div> <div className="center"> ListPage </div> <div className="right"> <ToolbarButton> <FontAwesomeIcon icon={faSync} /> </ToolbarButton> </div> </Toolbar>}> <List dataSource={this.state.result} renderRow={(device, idx) => ( <ListItem modifier='longdivider'> {result.name} <Button>Connect</Button> </ListItem> )} /> </Page> <p>{this.state.error}</p> </div> ); } } export default ListPage;
3、4行目で FontAwesome と使いたいフォントアイコンをインポートしています。
で、実際に使っているのは 16行目と 24行目です。
<ToolbarButton>
タグ内でフォントアイコンを定義しています。
で、上記を実行したところ、問題なくアイコンが表示されました!
まあ、以前も同じように書いて動いたので、むしろこれで動いてくれないと困るんですけどね。
以上、Onsen UI でアイコンが表示されない時の対処法でした。
前述しましたが、恐らく正攻法ではないと思いますので、時間を見つけて公式のサンプルコードが動くように修正したいと思います。