{"componentChunkName":"component---src-modules-datocms-post-page-page-tsx","path":"/posts/48","result":{"data":{"post":{"title":"「Halogen」16種のロード中アニメを表示するReactコンポーネント","author":{"name":"suin","images":{"r32":{"src":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&fm=png&h=32&mask=ellipse&w=32","srcSet":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1&fm=png&h=32&mask=ellipse&w=32 1x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1.5&fm=png&h=32&mask=ellipse&w=32 1.5x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=2&fm=png&h=32&mask=ellipse&w=32 2x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=3&fm=png&h=32&mask=ellipse&w=32 3x"},"r48":{"src":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&fm=png&h=48&mask=ellipse&w=48","srcSet":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1&fm=png&h=48&mask=ellipse&w=48 1x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1.5&fm=png&h=48&mask=ellipse&w=48 1.5x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=2&fm=png&h=48&mask=ellipse&w=48 2x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=3&fm=png&h=48&mask=ellipse&w=48 3x"}},"bio":"好き: TypeScript, DDD, OOP／#YYTypeScript の主催者／Qiita 4位／株式会社クラフトマンソフトウェア取締役／『実践ドメイン駆動設計』邦訳レビュア／#分報 考案者／Web自動テストShouldBeeを開発"},"date":"2015年10月18日","tags":["React"],"category":"プログラミング","body":"<a href=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/2789114a-8c50-4540-9a17-411a38943961.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img width=\"576\" alt=\"image.png (160.9 kB)\" src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/2789114a-8c50-4540-9a17-411a38943961.png\"></a>\n<p data-sourcepos=\"3:1-4:63\">Reactを使ってシングルページアプリケーションを作成すると、<br>\nサーバと非同期の通信をすることが増えます。</p>\n<p data-sourcepos=\"6:1-7:105\">ロード中や通信中であることをUIにちゃんと表現できないと、<br>\nユーザに「バグってる？」と思われたりとユーザ体験を壊すことがあります。</p>\n<p data-sourcepos=\"9:1-9:107\"><a href=\"http://madscript.com/halogen/\" target=\"_blank\" rel=\"noopener noreferrer\">Halogen</a>は、ローダーアニメーションを提供してくれるReactコンポーネントです。</p>\n<h1 data-sourcepos=\"12:1-12:26\" id=\"1-0-0\" name=\"1-0-0\">\n<a class=\"anchor\" id=\"インストール方法\" name=\"%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95\" href=\"#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95\" data-position=\"1-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"インストール方法\"> &gt; インストール方法</span></a>インストール方法</h1>\n<div class=\"code-block\" data-sourcepos=\"14:1-16:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>npm <span class=\"nb\">install </span>halogen <span class=\"nt\">--save</span>\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"18:1-18:11\" id=\"2-0-0\" name=\"2-0-0\">\n<a class=\"anchor\" id=\"使い方\" name=\"%E4%BD%BF%E3%81%84%E6%96%B9\" href=\"#%E4%BD%BF%E3%81%84%E6%96%B9\" data-position=\"2-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"使い方\"> &gt; 使い方</span></a>使い方</h1>\n<p data-sourcepos=\"20:1-20:105\">使い方は<code>halogen</code>パッケージから使いたいローダーをインポートするだけです。</p>\n<div class=\"code-block\" data-sourcepos=\"22:1-34:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>jsx</div>\n<div class=\"highlight\"><pre class=\"highlight jsx\"><code><span class=\"k\">import</span> <span class=\"nx\">React</span> <span class=\"k\">from</span> <span class=\"dl\">\"</span><span class=\"s2\">react</span><span class=\"dl\">\"</span><span class=\"p\">;</span>\n<span class=\"k\">import</span> <span class=\"nx\">ReactDom</span> <span class=\"k\">from</span> <span class=\"dl\">\"</span><span class=\"s2\">react-dom</span><span class=\"dl\">\"</span><span class=\"p\">;</span>\n<span class=\"k\">import</span> <span class=\"p\">{</span><span class=\"nx\">PulseLoader</span><span class=\"p\">}</span> <span class=\"k\">from</span> <span class=\"dl\">\"</span><span class=\"s2\">halogen</span><span class=\"dl\">\"</span><span class=\"p\">;</span>\n\n<span class=\"nx\">ReactDom</span><span class=\"p\">.</span><span class=\"nx\">render</span><span class=\"p\">(</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nc\">PulseLoader</span> <span class=\"na\">color</span><span class=\"p\">=</span><span class=\"s\">\"#26A65B\"</span> <span class=\"p\">/&gt;</span>\n  <span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;,</span>\n  <span class=\"nb\">document</span><span class=\"p\">.</span><span class=\"nx\">getElementById</span><span class=\"p\">(</span><span class=\"dl\">\"</span><span class=\"s2\">demo1</span><span class=\"dl\">\"</span><span class=\"p\">)</span>\n<span class=\"p\">);</span>\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"36:1-36:8\" id=\"3-0-0\" name=\"3-0-0\">\n<a class=\"anchor\" id=\"デモ\" name=\"%E3%83%87%E3%83%A2\" href=\"#%E3%83%87%E3%83%A2\" data-position=\"3-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"デモ\"> &gt; デモ</span></a>デモ</h1>\n<div id=\"demo1\"><a href=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/1d7fa83e-6a2e-443a-a224-bb0e2f74af85.gif\" target=\"_blank\" rel=\"noopener noreferrer\"><img width=\"145\" alt=\"demo1.gif (13.8 kB)\" src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/1d7fa83e-6a2e-443a-a224-bb0e2f74af85.gif\"></a></div>\n<script src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/2b2fb65e-a832-4ea3-98fa-aff56b3f6b9c.js\"></script>\n<p data-sourcepos=\"41:1-41:50\">ローダーは16種類提供されています。</p>\n<ol data-sourcepos=\"43:1-59:0\">\n<li data-sourcepos=\"43:1-43:14\">PulseLoader</li>\n<li data-sourcepos=\"44:1-44:15\">RotateLoader</li>\n<li data-sourcepos=\"45:1-45:13\">BeatLoader</li>\n<li data-sourcepos=\"46:1-46:13\">RiseLoader</li>\n<li data-sourcepos=\"47:1-47:13\">SyncLoader</li>\n<li data-sourcepos=\"48:1-48:13\">GridLoader</li>\n<li data-sourcepos=\"49:1-49:13\">ClipLoader</li>\n<li data-sourcepos=\"50:1-50:13\">FadeLoader</li>\n<li data-sourcepos=\"51:1-51:14\">ScaleLoader</li>\n<li data-sourcepos=\"52:1-52:15\">SquareLoader</li>\n<li data-sourcepos=\"53:1-53:15\">PacmanLoader</li>\n<li data-sourcepos=\"54:1-54:13\">SkewLoader</li>\n<li data-sourcepos=\"55:1-55:13\">RingLoader</li>\n<li data-sourcepos=\"56:1-56:13\">MoonLoader</li>\n<li data-sourcepos=\"57:1-57:12\">DotLoader</li>\n<li data-sourcepos=\"58:1-59:0\">BounceLoader</li>\n</ol>\n<p data-sourcepos=\"60:1-60:85\"><code>color</code>属性を指定すると、好きな色に変更することができます。</p>\n<div id=\"demo4\"><a href=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/760fdc28-c37f-4e2a-ad55-41de8ea37991.gif\" target=\"_blank\" rel=\"noopener noreferrer\"><img width=\"381\" alt=\"demo4.gif (111.5 kB)\" src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/760fdc28-c37f-4e2a-ad55-41de8ea37991.gif\"></a></div>\n<script src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/92fb3793-c7e1-4914-ac4a-876b2bc8d1be.js\"></script>\n<p data-sourcepos=\"65:1-65:66\"><code>size</code>属性でローダーのサイズの変更もできます。</p>\n<div id=\"demo3\"><a href=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/fa70aa32-2cd7-402c-9bdb-d4b3db25be3a.gif\" target=\"_blank\" rel=\"noopener noreferrer\"><img width=\"145\" alt=\"demo3.gif (58.9 kB)\" src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/fa70aa32-2cd7-402c-9bdb-d4b3db25be3a.gif\"></a></div>\n<script src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/8ac2e294-a4b7-44cc-8375-6ac3e4a1c3fe.js\"></script>\n<p data-sourcepos=\"70:1-70:130\">Halogenは、ローダーを自作するのは面倒、というときにサクッと導入できるのがいいところです。</p>\n<ul data-sourcepos=\"74:1-77:0\">\n<li data-sourcepos=\"74:1-77:0\"><a href=\"https://github.com/yuanyan/halogen\" target=\"_blank\" rel=\"noopener noreferrer\">yuanyan/halogen</a></li>\n</ul>\n"}},"pageContext":{"id":"DatoCmsPost-5142985-ja","description":"Reactを使ってシングルページアプリケーションを作成すると、 サーバと非同期の通信をすることが増えます。 ロード中や通信中であることをUIにちゃんと表現できないと、 ユーザに「バグってる？」と思われたりとユーザ体験を壊すことがあります。 Halogenは、ローダーアニメーションを提供してくれるReactコンポーネントです。 インストール方法 使い方 使い方はhalogenパッケージから使いたいローダーをインポートするだけです。 デモ ローダーは16種類提供されています。 PulseLoader RotateLoader BeatLoader RiseLoader SyncLoader Gri","toc":[{"tag":"h1","depth":1,"href":"#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95","text":"インストール方法","html":"インストール方法"},{"tag":"h1","depth":1,"href":"#%E4%BD%BF%E3%81%84%E6%96%B9","text":"使い方","html":"使い方"},{"tag":"h1","depth":1,"href":"#%E3%83%87%E3%83%A2","text":"デモ","html":"デモ"}],"ogpImageUrl":"https://www.datocms-assets.com/29850/1593190022-pastedimage20200627146.png?fm=png&mark64=aHR0cHM6Ly93d3cuZGF0b2Ntcy1hc3NldHMuY29tLzI5ODUwLzE1OTMxNTQ2MzYtdHJhbnNwYXJlbnQtcGl4ZWwucG5nP3c9NDAwJmg9NjQmZml0PWNyb3AmYmxlbmQ2ND1hSFIwY0hNNkx5OTNkM2N1WkdGMGIyTnRjeTFoYzNObGRITXVZMjl0THpJNU9EVXdMekUxT1RFNE16TXlPVEF0WVhaaGRHRnlOVEV5TG1wd1p6OXRZWE5yUFdWc2JHbHdjMlVtWm0wOWNHNW5KbmM5TWpVMkptZzlNalUyJmJsZW5kLWg9NjQmYmxlbmQteD0wJmJsZW5kLXk9MCZibGVuZC1tb2RlPW5vcm1hbCZtYXJrNjQ9YUhSMGNITTZMeTloYzNObGRITXVhVzFuYVhndWJtVjBMMzUwWlhoMFAzUjRkQzFoYkdsbmJqMXRhV1JrYkdVbE1rTnNaV1owSm5SNGRDMW1iMjUwUFhOaGJuTXRjMlZ5YVdZbE1rTmliMnhrSm5SNGRDMWpiMnh2Y2oweU1qRTRNVFltZEhoME5qUTlZek5XY0dKbkpuUjRkQzF6YVhwbFBUTXdKbWc5TmpRJm1hcmsteD02NCZtYXJrLWFsaWduPW1pZGRsZSUyQ2xlZnQ&mark-align=bottom%2Cleft&mark-x=100&mark-y=496&blend64=aHR0cHM6Ly93d3cuZGF0b2Ntcy1hc3NldHMuY29tLzI5ODUwLzE1OTMxNTQ2MzYtdHJhbnNwYXJlbnQtcGl4ZWwucG5nP3c9MTIwMCZoPTYzMCZmaXQ9Y3JvcCZtYXJrNjQ9YUhSMGNITTZMeTkzZDNjdVpHRjBiMk50Y3kxaGMzTmxkSE11WTI5dEx6STVPRFV3THpFMU9UTXhOVEE1TkRBdFkzSmhablJ6YldGdUxUQXhMbkJ1WncmbWFyay1hbGlnbj10b3AlMkNjZW50ZXImbWFyay13PTI1MCZtYXJrLXk9ODAmYmxlbmQ2ND1hSFIwY0hNNkx5OWhjM05sZEhNdWFXMW5hWGd1Ym1WMEwzNTBaWGgwUDNSNGRDMWhiR2xuYmoxdGFXUmtiR1VsTWtOalpXNTBaWEltZEhoMExXWnZiblE5YzJGdWN5MXpaWEpwWmlVeVEySnZiR1FtZEhoMExYQmhaRDB4TURBbWRIaDBMV052Ykc5eVBUSXlNVGd4TmlaMGVIUTJORDAwTkVOTlUwZEdjMkl5Wkd4aWRVOUJhbFJGTWpVMmFYVTBORWQxTkRSUGREUTBUemcwTkU5S05VeHBkRFEwUzJrME5FOU1ORFJQYURRMFMxTTJTMGR2TlRaVE5qUTBSMW8wTkV0TVZXMVdhRmt6VkdwbmNsQnFaemRRYW1jMU0ycG5OM3BxWnpRemFtYzNVR3BuTkdjbWRIaDBMWE5wZW1VOU5UVW1kejB4TWpBd0ptZzlOak13JmJsZW5kLW1vZGU9bm9ybWFs&blend-mode=normal","otherPost":{"type":"author","title":"ウェブサービスの請求書の出し方どうすべき？12サービスの請求書を集めて比較してみた","slug":"/posts/54"}}}}