Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Reactのチュートリアルをしよう3
Search
akatsuki1910
December 05, 2023
0
34
Reactのチュートリアルをしよう3
akatsuki1910
December 05, 2023
Tweet
Share
More Decks by akatsuki1910
See All by akatsuki1910
機械の気持ちを考えてコードを書こう
akatsuki1910
0
9
サーバーを使って遊ぼう
akatsuki1910
0
16
お前、GCってまあ別に気にしなくていいだろって思いながらwebサイト作ってるだろ
akatsuki1910
0
13
業務を効率化させるためのAIツール3選(超実践編)
akatsuki1910
0
39
後輩に伝えたいこと
akatsuki1910
0
24
難解(かもしれない)言語
akatsuki1910
1
43
クソドメインを取ろう
akatsuki1910
0
64
Reactのチュートリアルをしよう2
akatsuki1910
0
29
HTMLとCSSとコンポーネント
akatsuki1910
0
41
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
170
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
490
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
89
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
GitHub's CSS Performance
jonrohan
1032
470k
Mobile First: as difficult as doing things right
swwweet
225
10k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
850
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
93
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
130
Transcript
Reactのチュートリアルをしよう3 らり
勝敗を表示 calculateWinner関数を用いて、勝敗が確定してい たら、勝敗を表示してまるばつを表示する機能を止 める
タイムトラベル機能を用意する 盤面を戻す機能を作る 内容としては、配列を毎度保存して、それを呼び出す
記録用の配列を作る 記録用の配列を作る ちなみにArrayにnew演算子を付ける必要はない
記録配列に保存 関数を用意してあげて、それをボード側で毎度呼び出す それが呼ばれたら親側で盤面を保存し、次の手番に渡す
useCallback メモ化されたコールバック関数を返す 他の場合には関数をラップするメリットはありませんuseCallback。これを行っても大きな 害はありません。そのため、チームによっては、個々のケースについて考えず、可能な 限りメモ化することを選択します。欠点は、コードが読みにくくなることです。また、すべて のメモ化が効果的であるわけではありません。コンポーネント全体のメモ化を解除する には、「常に新しい」単一の値で十分です。 https://react.dev/reference/react/useCallback
useCallback 概念としては、関数のメモ化 useMemoは値のメモ化に対して、useCallbackは関数のメモ化 https://react.dev/reference/react/useCallback
useCallbackの使用例 右の例だと、handleClickはレン ダリングされた時にしか更新され ないため、Appのボタンを押した としても、Childは再レンダリング されない
記録を取り出す 記録配列を回し、ジャンプする ためのボタンを用意する
keyをちゃんとつけよう キーは兄弟間で一意である必要があります。ただし、異なる配列のJSX ノードに同じ キーを使用しても問題ありません。 キーを変更したり、その目的を損なったりしてはなりません。レンダリング中にそれらを 生成しないでください。 => 配列を回した時のインデックスだけ入れるな => プレフィックスも意味ない
https://zenn.dev/t_keshi/books/you-and-cleaner-react/viewer/gathering-confusing-key
なんでつける必要があるの 例えばその要素の中身が変わった時、そのDOMが「削除」されたのか「値が変わっただ け」なのかを判別出来ないため デスクトップ上のファイルに名前がなかったと想像してください。代わりに、最初のファイ ル、2 番目のファイルなどの順序で参照します。慣れることはできますが、ファイルを削 除すると混乱するでしょう。2 番目のファイルは最初のファイルになり、3 番目のファイル は
2 番目のファイルになり、以下同様になります。 https://zenn.dev/t_keshi/books/you-and-cleaner-react/viewer/gathering-confusing-key
keyをちゃんとつけよう keyをインデックスだけを用いている場合、毎度DOMの再生成が行われる可能性があ るため、描画が重くなる場合がある 軽量化のためにメモ化を計る前に、きちんとkeyをつける習慣を心がけましょう
ジャンプ先の関数の中身を作る 手番を戻し、まるばつの順番も変える
クリックした時の中身を変える 履歴を保存し、手番を次に変える
完成! 状態管理を関数内から外に出す これにより各処理が単純になり、読みやすくなる これにより、まるばつゲームの完成である
useReducer(使わない時)
useReducer(使う時)
何がうれしい? 処理をstateと紐づけれるため、共通化をしやすい また、callback->stateとしないといけないのがdispatchだけですむため、コードが簡略 化される reducer関数を出し分けることができるため、テストが書きやすい 使い時を見極めるのは大変だが、導入するとコードの読みやすさが上がったり、記述ミ スを減らすことが出来る
課題 課題 可能な限りメモ化してください また、再レンダリング回数を極力落としてください