青いやつの進捗日記。

メモとしてべんきょうのしんちょくをかいていきます。あとで自分が検索しやすいもん

react

VSCode スニペット React向けにスコープを設定する

zenn.dev jsdoc.code-snippets { // Place your GLOBAL snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable in t…

react-modalでモーダルのDOMを差し込む親を選ぶ

デフォルトだと一番最後にモーダルが入る CSSの指定上、どこかの相対位置でモーダルを出したい場合はそこにDOM差し込まれると位置の指定が辛いので親要素を選びたい reactcommunity.org parentSelectorで選べる reactっぽくやるならrefで繋げて指定してあげ…

Warning: React version not specified in eslint-plugin-react settings. See https://github.com/jsx-eslint/eslint-plugin-react#configuration . の対処法

Warning: React version not specified in eslint-plugin-react settings. See https://github.com/jsx-eslint/eslint-plugin-react#configuration . というwarningが出ていたのでその解決方法 blog.freks.jp zenn.dev settings: { react: { version: 'detec…

0がtruthyなので0が描画されちゃう問題をlintでふせぐ

tech.motoki-watanabe.net tech.motoki-watanabe.net 過去に苦しんでた。0が描画されちゃうやつ。きづければいいんだけど、人間の認知の限界はある。 そんなときに使えるeslintのpluginが…! zenn.dev GithubのStarが少ないのがちょっときになるけど、とはい…

子コンポーネントの関数を叩けるuseImperativeHandle

とある条件下でコンポーネントにfocusさせたかった。結局この方法は採用しなかったけど備忘録として。 zenn.dev qiita.com forwardRefでrefを受け流して繋げて(本題から逸れるがforwardRefじゃなくてpropsでRefObject渡すのでも同様に可能)、コンポーネン…

【メモ】Hydrationエラー って何 React18でHydrationエラーとやらが起こるらしい

zenn.dev v3.ja.vuejs.org HTMLがそのページに必要なJavaScriptを読み込んで動的なDOMを生成する過程ことを言うのかな? React18でHydrationエラーが起きるようになったらしいので、React18にあげるなら直すしかない blog.ojisan.io zenn.dev なぜ起こるかと…

cannot assign to read only property | useStateで管理しているオブジェクトの更新をする際にイミュータブルな感じでやるようにする

qiita.com まあどうやらオブジェクトを直接更新するの無理ってことみたい。まあstateなので直接更新するつもり無いのだけど、オブジェクトを直接更新した新しいオブジェクト作ってそれをsetする、みたいなときにも怒られちゃうので、新しいオブジェクトの作…

【メモ】Reactでユーザーから見えていないコンポーネントへのパフォーマンス改善

場面としてはドロワーとか? ユーザから見えていないコンポーネントの描画を発生させなくさせてパフォーマンスを改善するライブラリ react-freeze。ドロワーとか多段する時とかが主なユースケースみたい、良さそう❄️https://t.co/S4JFBUIxCw— フロントエンド…

styled-componentsですごい頻度でpropsを更新し続けていたらattrsメソッドを使えと怒られた

react_devtools_backend.js:2842 Over 200 classes were generated for component Seekbar__Preview with the id of "Seekbar__Preview-sc-16onun1-1". Consider using the attrs method, together with a style object for frequently changed styles. Exam…

【メモ】Next.jsの参考リンク

qiita.com

Reactで子要素から親要素のpropsを変える。buttonコンポーネントのonClick時に動かしたい関数を親から渡す

qiita.com 地味にちょっと理解できていなかったけど、わかった気がする ボタンコンポーネント type Props = { onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void } export const Button = (props: Props) => { const { onClick } = props return ( <button onClick={onClick}>content</button> ) } </htmlbuttonelement>…

TypeScript で使うタグの属性一覧を取得し、propsとして流す

qiita.com type InputProps = JSX.IntrinsicElements['input'] たぶんReact.ComponentPropsWithRefでもいける? ginpen.com で、例えばInputコンポーネントを作っていたとして、inputタグに標準で指定できる属性以外にもpropsあるとすると、コンポーネントへ…

TypeScript、型の条件分岐、色々ある ConditionalTypeとかts-xorってライブラリ使うとか

TypeScriptで型の条件分岐が色々方法あるの知らなかった… 1つ目、特定のPropsに応じて条件分岐させる。 そもそも、TypeScriptにはConditionalTypeっていうのがある qiita.com こういう例で一番出てくるのはボタンコンポーネントがaタグかbuttonタグか、で指…

SPAで一定時間をあけて処理する

docs.github.com SearchAPIが1分に30回までしか叩けないらしい。 ページネーションのようなものを実装したい。ただ普通にリスト取れるAPIだと一度に取れる件数に制限あって、プルリクだったら100。SearchAPIでtotal_lengthがとれるのでそれをとりたい。 けど…

Reactで良い感じにページ内アンカー(ページ内遷移)を実装する

www.npmjs.com github.com これ便利。 import { Element, Link as ScrollLink } from 'react-scroll' <ScrollLink to="section" smooth={true} duration={500}> TextText </ScrollLink> <Element name="section"> Section </Element> これでScrollLink to="section"を押下時にスムーススクロールでElement name="section"まで遷移してくれる。 import { anima…

Reactで数字入ってるかを条件に&&で出し分けようとすると、0が描画される→なぜなら0はfalseだから…!

どういう状況の話かと言うと、 num && ( <Text>{list[num]}</Text> ) のように、型がnumberの変数numが入っていたらlist[num]を描画したい、という状況。 で、numに1とか入ったら意図通り<Text>list[1]</Text>が描画されるのだけど、numに0が入ると、<Text>list[0]</Text>ではなく、なぜか0だけ描画…

React.Fragmentにkeyを入れる必要がある場面がある

qiita.com わざわざ<React.Fragment>って書く場面あるのかなとか思って全て<>にしてました。ありました。 mapとかでreturnする際にkeyを指定しておく必要ありますが、一番外側に必要なので、その際にFragmentが一番外の場合は<>だとkeyを指定できないので <React.Fragment key={hoge}> </React.Fragment> のようにする必要</react.fragment>…

Next.jsでlocalStorageを使う

Next.jsでStorageオブジェクトを使う これが参考になります あと、localStorageとかのキー名は1つのファイルにまとめておいたほうが管理的に良い

ReactでSNSシェア機能をreact-shareというライブラリで

yurufuwa-tech.hatenablog.com ReactでSNSのシェアをしたいときに、 github.com これが便利。 TwitterのツイートボタンとかはHTMLだとTwitterのなんかそれ用のページでぽちぽちするとタグを生成できるのでそれを埋め込むだけだが、ReactだとTwitter用のJSを…

styled-componentsでforwardedAsを使ってコンポーネント拡張した上でタグを変更する

qiita.com <EventButton forwardedAs="p"> dummydummy </EventButton> const EventButton = styled(Button)` width: 320px; height: 53px; ` ↑pages/page.tsx export const Button = (props: Props, as: any) => { <Container forwardedAs={as} > const Container = styled.button`` ↑Button.tsx これで、buttonタグで作られているforw</container>…

Amplify + Cognito + React ならこのQiita見ておけば良いっぽい

qiita.com

AmplifyでNo Credentialsとか言われちゃう時

qiita.com らしい。 ただ、今の開発環境、Amplify関連のファイルはあるがこの記事によると肝心のaws-export.jsがなかった。 調べた感じ、どうやらamplify initとかしないとgenerateはしないっぽい感じがする。 でもすでにAmplify関連のファイルはあって、ini…

Storybookでdecolaterを使い、各Storyを共通のもので包む

storybook.js.org qiita.com decorators: [ Story => ( <div style={{ width: '216px' }}> <Story /> </div> ), ], これでこのコンポーネントのStoryは全てこのdivに包まれる。

Storybookの諸々の書き方まとめ

index.stories.tsx importする、Metaがいる import { Story, Meta } from '@storybook/react/types-6-0'; descriptionでStorybookの上の方にそのコンポーネントの説明が出る subComponent指定でこのStoryからそのコンポーネントも見れる export default { ti…

useEffectを調べた。ライフサイクル扱えるようになるのね。

React・TypeScriptで書いてHTMLにビルドして〜みたいなことをしているのだが、コンポーネントはStorybookで閲覧できるようにしている。 HTMLにビルドしているのでJSとかは普通にquerySelectorして〜みたいに書くのですが、Storybookは普通にReactで動くから…

reactでVimeoを埋め込む

Vimeo埋め込むときってiframe埋め込みじゃないですか。でもJSXでどうやって埋め込むんだろうなーって思ってちょっと調べていたところ、ライブラリがあったんでそれを使うことに。 github.com www.npmjs.com // TODO 仮でvimeoのIDを入れています const video…

Next.jsで特定のディレクトリがPCのみの画面だとしたらSPではその画面ないので同等の画面にリダイレクトさせる

pageディレクトリがあったとして、ただその画面はPCでのみ存在し、SPではルートにリダイレクトさせたい。 react-responsiveとrouterでいけます import { useMediaQuery } from 'react-responsive' import Router from 'next/router' export const page = (pr…

基本肯定文のほうが読みやすいので、分岐の際は肯定から書く

基本肯定文のほうが読みやすいので、 !login ? () : (); ではなく login ? () : (); と書く

Reactでmapで生成するときの、keyに入れる値はindexを出来れば避ける

qiita.com Reactでmapで繰り返しする場合keyを指定する必要がある。 なにも考えずに、よく array.map((item, idx) => { return ( <item key={idx}> のようにやっていました。なんかもう、keyにはindexを入れるものだと。 そしたらレビューでkeyはindexじゃなくて、この場合な</item>…

react-responsiveでレスポンシブ対応。TypeScriptで使う場合は@types/react-responsiveも必要

www.npmjs.com github.com qiita.com Reactでレスポンシブするときに普通にStyled-Componentで@media〜とか書いてやるのかなーと思っていたらこれよく使うと。便利ですねこれ。画面幅によって要素がそもそも全然違う時とかはこれでコンポーネントごとそもそ…