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

React NativeでTouchableWithoutFeedback配下のScrollViewがなぜかスクロールできないときのメモ

めっちゃハマったので知見を忘れないように書いておく。 結論: onStartShouldSetResponder ScrollViewの内側のViewのPropsにonStartShouldSetResponder={() => true}する こうなっていればスクロールできるようになるはず。 <TouchableWithoutFeedback> <ScrollView> <View onStartShouldSetResponder={() => true}> {scrollableContents} </View> </ScrollView></touchablewithoutfeedback>…

VS Codeで複数行選択して各行にカーソルを置くやつ

なぜか憶えられなくていっつもやりかた忘れるので書いておくシリーズ これをやるショートカット ⌘+Shift+Lで できる。 環境によってはShift+Option+Iでもできるかもしれない。 終わり。

styled-componentsに独自のpropsを生やして値を渡したら怒られたときのメモ

2行 独自に生やしたpropsをまるごと渡してはいけない 分割代入でdomのattributesに定義がないpropsを間引く エラーメッセージ なんかこういう2種類のやつを言われる React does not recognize the `isAvailable` prop on a DOM element. If you intentionall…

Reactコンポーネントをsvg要素の内側に表示する

SVGの内側にコンポーネントを表示させようとして、やったらハマった。 普通にできるものだと勘違いしていたけれど、SVGの内側にはSVGが描画できるタグしか通常描画できない。なぜならSVGはSVG空間だから…。 結論 foreignObjectを使う。 developer.mozilla.or…

ZEITのnow(v2)でデプロイしたらドメインaliasを最新のデプロイに追従させる

nowでホスティングしていて、例えば『hogefuga-goyani001m.now.sh』みたいなユニークURLにaliasを貼って『awesome.hogefuga.jp』でドメイン設定してあるとする。 なんか変更があってnowコマンドで再度デプロイすると新しく『hogefuga-gree002w.now.sh』のよ…

JavaScriptのオブジェクトのキーを角カッコ[brackets]で囲う記法について

オブジェクトのキーが [ ] ←これ に囲われている 見かけたことはありますか?僕はあります。 const obj = { [a]: 'foo' } こういうやつ たまに見かけるけど頻繁には見ないのであんまり書くことも少なくて、ついどういう挙動だったか忘れてしまうシリーズ。 …

chrome dev toolsのコンソールに出力されたオブジェクトをコピーする方法

tl;dr オブジェクトを右クリックしてStore as Global Variableをクリック copy(temp1) ⌘+Vでペーストできる! これをこうして… コピペできた ありがとうstackoverflow stackoverflow.com 手法はここに書いてあることが全て…。 Failed to save to temp variab…

オブジェクトの特定プロパティが両方存在するかチェックするときの速度について調べていた

経緯 github.com react-loopsというHooksを使ってJSXでForループをやるというアプローチのライブラリが出ていたので見ていた。 実装どうやってるんだろうな〜って思ってソース見てたらなんかPropsオブジェクトのプロパティをチェックしていて、あんまり見な…

『react-use-event-listeners』というカスタムフックをリリースしました

しました。 www.npmjs.com いますぐ yarn add react-use-event-listeners これはなに ReactのhooksスタイルでDOMに対してaddEventListenerするやつです。 Reactで合成イベント(SyntheticEvent)ではないイベントを使いたいときにaddEventListenerでイベント登…

TypeScriptで"ユニオン型あるいはなにかしらの型"を表現する方法について

型定義書いていて『Union型に当てはまる場合はそのどれかだが、どれにも当てはまらなかったら"この型"』みたいなものを書きたくなるときがある。 例えば type UnionA = 'tarou' | 'jirou' | 'saburou' というUnion型があって、このUnionA型に当てはまらなか…

React hooksで再レンダリングを防ぐためにイベントハンドラをメモ化するとハンドラの外側にある変数参照値もメモされてしまう問題について

タイトルが長い! 3行 useCallback(()=> ,[])とかuseEffect(()=>,[])みたいにハンドラをメモる ムダな再レンダリングが起こるのを防ぎたい イベントハンドラ内で外部変数(例えばconst [state, setState] = useState()のstate)を参照する イベントが起こるた…

create-react-appのv2で開発しているページで読み込み時に一瞬CSSが適用されていないページが描画される問題(FOUC)が起こる

タイトルが長いシリーズ いつからかCRA2で開発しているページの読み込み時に一瞬スタイルが適用されていない素のHTMLのページが見えてチラつく現象(FOUC)が起こって困っていた。 v2.1.6を待つ github.com Issueあった どうやらv2.1.3までは起こってなかった…

direnvで親階層の.envrcも複数読み込む

これ、またやってしまった tech-1natsu.hatenablog.com コミッタ名がおかしくなるやつ なんでやってしまったかというと、direnvでgitコミッタ名を管理しているからで、親階層にGitコミッタ名の変数を管理している.envrcを置いている。 その状況下でプロジェ…

React Hooksのメモ化のための第二引数の配列にオブジェクトを突っ込んだときの挙動について

タイトルが長い。 useEffectとかuseMemoとかの第一引数に渡した関数を発火させるかどうかの条件指定とも言える第二引数の配列にオブジェクトをまるごと入れたらどうなるのか というはなし。 勘違いしそうなので最初に説明しておくと、 useMemo(()=> someFunc…

@typescript-eslintを使ってTypeScriptでもESLintする@2019

MSのTSチームがESLintを推進させ始めた まだ完璧ではないがだいぶ安定してきてそろそろTSでも現実的にESLintできるようになってきた気がする プロジェクト単位で**ESLintでTypeScriptの面倒をみる方法 typescript-eslint @typescript-eslint/parser https://…

TypeScriptで継承したinterfaceのプロパティを一部上書きする方法

やっていいかは別として バグの原因になるとか、OOPに反するとかいろいろあるけれど、interfaceをextendsして継承元にあるプロパティを一部だけ上書きして別のプロパティにしたいみたいな気持ちになることがある(と思う)。 おさらい interface Aがあってそれ…

TypeScriptでみかける"is"というキーワードについて

TypeScriptでググっても出てこなくてよくわからないやつ。 他人が書いたTypeScriptのコード見てるとたまに const isString = (arg: any): arg is string => typeof arg === "string"; のように「引数 is 型」と書かれたものを見かける。 このコードは引数に…

Kyoto.js 15 で「CSS in JSでメディアクエリをパッとやる」というトークをした

Kyoto.js 15に参加した。 発表枠で応募してLT枠という形で出た。けど5分じゃなくだいたい10分位というざっくりした感じで喋った。たぶん10分位で喋れてたと思う(計るの忘れてた)。 しゃべった内容 CSS in JSと書いてから気づいたけど主語が大きすぎると思っ…

React Hooks使って『Hooks can only be called inside the body of a function component.』って怒られる問題

まだalphaリリース(v16.7.0-alpha)のHooksを使っていたらハマった。 『Hooks can only be called inside the body of a function component.』とエラーバウンダリーの画面で怒られてしまう。 状況 親プロジェクトでHooksを用いたライブラリコンポーネントを…