きみはねこみたいなにゃんにゃんなまほう

ねこもスクリプトをかくなり

2019-01-01から1年間の記事一覧

Material UI の AppBar と Drawer を自分好みに組み合わせる

半年ほどかけてようやく Material UI にも慣れてきました。AppBar と Drawer の組み合わせは昨今のアプリでは定番となっていますが、レスポンシブに Drawer の表示を切り替えようとすると、AppBar との色使いの兼ね合いで迷います。 モバイルなどの狭いスク…

Material-UI と Downshift のスナップショットテストで属性値の差分が出るのを解消する

最近 React のテストを書き始めて、Jest の toMatchSnapshot 便利だなと感じながら使っています。 テスト結果をいちいちテストコード内に頑張って組み立てる必要がなくて楽ですし、 出力結果の差分ってコードの変更の結果としてもとても理解しやすいんですよ…

React のテストは react-dom/test-utils から @testing-library/react に進むと理解しやすそう

lightbulbcat.hatenablog.com の続きです。React のテスト用ライブラリを色々試した結果 react-dom/test-utils をちょっと触った後で、 @testing-library/react を導入するといいんじゃないかなと思いました。学習順序的な話です。 react-dom/test-utils は …

enzyme と react-test-renderer と @testing-library/react を素朴に試す

React のテスト用ライブラリっていくつかある上に、それぞれサポートしている機能が違うんですよね。 ついでに提供されているメソッドや、メソッドチェーンの様式も様々なので、出来るだけ速やかに繰り返し実行できる環境で触りながら把握できると便利です。…

Reactコンポーネントのアンマウント後の更新を避けるために AbortController を使ってみる

これです。 Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.…

React で Markdown を扱うときに便利な react-markdown と remove-markdown

Markdown 便利ですよね。使う側にとってはテキストベースでリッチコンテンツを表現できますし、開発者側にとってもアプリを実装する際に Markdown 対応さえしてしまえば、ある程度の表現力を確保できるとともに、XSS対応などもライブラリ側がしてくれている…

useEffect の評価タイミングが分からないので泣きながら試す

useEffect と useState を組み合わせた Hook を作成しようとしたのですが、動作のタイミングが今ひとつわからずうまく処理が噛み合わない Hook ができてしまったので、簡単な例で挙動を探っていきます。 色々試してみましたが、結局よくわかりませんでした。…

Prettier のデフォルト設定を ~/.prettierrc に置く

最近 React のちょっとした挙動を確認するために crate-react-app でプロジェクトを作成することが多くなりました。; いらない派の私としては生成されたファイルをそのまま使いたくないので、毎回 Prettier を適用するために .prettierrc をプロジェクトルー…

ReactRouter のページ遷移で値が切り替わるように Formik の入力値を localStorage に保存する

Formik のフォームの値を localStorage に保存しておくライブラリとして formik-persist というものがありますが、ReactRouter でページ遷移した際に値がうまく切り替わらなかったので自前で Hook を組んで何とか実装してみます。 経緯としては以下の通りで…

HOC と RenderProp と Hook の相互変換はどこまで可能か

React で Cross-Cutting-Concern の文脈で語られ比較されるものと言えば HOC と RenderProp と Hook ですね。 Higher-Order Components – React Render Props – React Hooks at a Glance – React 実際に開発を行っているとライブラリから提供される機能がそ…

(0, obj.method) は this の参照を obj から外せるらしい

Hyperapp を始めようとしたら Parcel という Webpack がシンプルになったようなツールがあるのを知り、バンドルされたコードを見てみたら var _hyperapp = require("hyperapp"); (0, _hyperapp.app)({ view: function view(state) { return (0, _hyperapp.h)…

.vue ファイルには template を複数書けないのか

公式ドキュメント を読みながら template と v-if を合わせられることを知って以下のように書きました。 Vue の単一ファイルコンポーネントの書き方ですね。 <template v-if="loaded"> ここが表示されるのを待てども...(*˘꒳˘*) </template> <template v-else> いつまでたっても Now Loading...(*˘꒳˘*) </template> <script> // ... </script> <style scoped></style>…

CSS の position: sticky を試してみる

Material UI の ListSubHeader の sticky な振る舞いって、どう実装されているんだろうと覗いてみたら position: sticky とだけ書かれていて「こんなプロパティをブラウザがサポートする時代になったんだな」ということを今更知ったので試してみます。 本文…

dataloader を使ってリクエストを取りまとめる React デモを作る

以前 GraphQL を利用していたときに、サーバサイドのSQLリクエストを減らすために使おうとしていたパッケージに dataloader というものがあります。 現在は GraphQL ではなく gRPC-Web を利用したアプリを書いているのですが、dataloader は別に GraphQL に…

VSCode で調べたショートカットリスト

目的は備忘録兼、後で見返して悦に入りたいからです。 環境は MacOS です。 すでに使っていたショートカット 思い出したら書いていきます。 新しく調べて覚えたくなったショートカット Command + Enter: カーソル行の後に空白行を追加 Vim の o 相当の動作が…