blog
public
$ログ
$規範
0が1に変わる変化とそれ以外の変化を分けて考える
0と100で考えない
10000人のフォロワーより、10人のファン、2人の友人
10年も立てばより安価で良い技術が出てくるので、10年後も同じモノを使用するということは考えないほうがいい
10日で仕上げるタスクであれば、2割の2日で8割のタスクを終わらせる
1つに絞る
1つのツールで全てをこなそうとしない
20%ルール
<
>
トップページ
ブログ
経験地図(Exp Map)
/
blog
public
$ログ
$規範
0が1に変わる変化とそれ以外の変化を分けて考える
0と100で考えない
10000人のフォロワーより、10人のファン、2人の友人
10年も立てばより安価で良い技術が出てくるので、10年後も同じモノを使用するということは考えないほうがいい
10日で仕上げるタスクであれば、2割の2日で8割のタスクを終わらせる
1つに絞る
1つのツールで全てをこなそうとしない
20%ルール
<
>
トップページ
ブログ
経験地図(Exp Map)
ReactのsetStateで設定した値を同期的に反映させるには
React
setStateで設定した値はReactで更新が走らないとすぐには反映されない
なので以下のようにしても必要な値が手に入らない
Loading...
以下のように更新を検知すればできるがよろしくはない
Loading...
クラスコンポーネントではコールバックを渡して確実な変更した値を使用することが出来た
Loading...
Loading...
普通に事前に別の変数に格納してくれ
Loading...
React
React×Recoil×Storybook を動かす
storybook の Args の型推論をオプショナルじゃなくする
BEMを始めとした手法はReactやVueには不向き(不要)
Container・Presentationalコンポーネント
React.Children.map
ReactとVueの比較(2021)
Reactのconditional renderとdisplay noneの違い
ReactのuseCallBack地獄
ReactのuseEffectでのアンマウント処理は普通の更新や遷移では発火しない
Reactのディレクトリ構造
Reactの技術質問の想定
React・VueなどのJS系フレームワークとJS・jQueryは何が違うのか
reactでビューに状態(計算?)をもたせちゃいけない?
reactで巨大なリストやグリッドの再描画問題
state→❌️値を保持 ⭕️再レンダリングを引き起こす状態を保持
「3種類」で管理するReactのState戦略
マイクロフロントエンド(SPA)
行動規範の参考
👀useCallbackはとにかく使え! 特にカスタムフックでは
👀本当に倒すべきだったのは jQuery ではなくテンプレートエンジンだった
📄Obsidianで使うタイトル用語集
🤔VueとReactの最終検討 @20210803
月別アーカイブ
2025年(162)
1月(16)
,
2月(102)
,
3月(44)
2024年(36)
1月(3)
,
2月(2)
,
4月(3)
,
5月(9)
,
6月(4)
,
7月(4)
,
8月(4)
,
9月(2)
,
10月(1)
,
11月(1)
,
12月(3)
2023年(43)
1月(30)
,
2月(1)
,
3月(6)
,
4月(2)
,
5月(2)
,
9月(1)
,
12月(1)
2022年(88)
1月(17)
,
2月(2)
,
3月(1)
,
4月(5)
,
6月(8)
,
7月(1)
,
8月(9)
,
9月(19)
,
10月(16)
,
11月(2)
,
12月(8)
2021年(50)
1月(12)
,
2月(3)
,
3月(4)
,
4月(14)
,
5月(1)
,
7月(1)
,
8月(1)
,
9月(3)
,
11月(2)
,
12月(9)
2020年(3)
12月(3)
2019年(5)
1月(4)
,
2月(1)
React hooksのuseStateにコールバックをセットするには
<p>React 16.8でReact hooksが導入されて久しい。 いまとなってはステートレスコンポーネントがReactコンポーネント作成のデファクトスタンダードになっている。すでにいくつかのクラスコンポーネントのライフサイクルは非推奨になっているものもある。 React hooksの導入に際して、まず接点があるであろうメソッドはuseState()だろうか。これはthis.setState() として状態を更新していたもののhook版と認識してもらえればよい。馴染みのあるthis.setState()とReact hooksのuseState()は、使いどころこそはおよそ同じであるが、this.setState()にできて、useState()にできないこともある。 それはコールバックの定義だ。 このエントリーでは、ステートレスコンポーネントにおける状態更新のコールバックについて共有したい。 もくじまず、クラスコンポーネントは?では、ステートレスコンポーネントだと?まとめ まず、クラスコンポーネントは? ステートレスコンポーネントにおけるコールバックを示す前に、クラスコンポーネントの例を確認してもらおう。クラスコンポーネントであるから、もちろんthis.setState()だ。 this.setState()の第一引数がステートオブジェクト、第二引数がコールバック関数だ。この例では、無名関数を定義しているが、任意の関数をセットできる。 では、ステートレスコンポーネントだと? 前述したとおり、useState()だとコールバックを定義できない。useState()は、状態値の定義と状態を更新するための関数を分割代入するだけのもので、this.setState()のようにコールバックを定義する機能は備わっていない。ではステートレスコンポーネントで状態が更新されたことを捕捉するにはどうしたらよいのだろう。 ステートレスコンポーネントの場合は、React hooksのuseEffect()を使う。 useEffect()は、ライフサイクルのcomponentDidMountやcomponentDidUpdate、componentWillUnmountに類似したものと認識してもらえればよい。 componentDidUpdateライフサイクルでは、現在のステートと更新されるステートを比較して何らかの処理を実行するような場合に使っていた。useState()でもこれを再現させれば良さそうだ。 useEffect()の第二引数に[isVisible]を渡している。これは現在のステートと更新されるステートを比較して、もし同値であればuseEffect()の第一引数の無名関数をスキップするというものだ。 果たして、ステート更新のコールバックを再現することができた。 まとめ ステートレスコンポーネントにおける状態更新のコールバックに関する共有だった。 useEffect()の第二引数に渡したステート変数を観測することで、コールバック関数を再現したわけだが、このソースコードの例では、コンポーネントがマウントされたタイミングでも実行されてしまうはずだ。そのようなときは無名関数内でステート値を厳密にチェックするようにしてほしい。 このたび言及した方法のほかに「use-state-with-callback」なるパッケージがあるようで、これでもコールバックができるらしい。わたしは試していないが、期待した機能は保有している様子だ。トライしてみても良いだろう。</p>
www.aizulab.com