タグ

useEffectに関するjay-esのブックマーク (7)

  • 結局 useEffect はいつ使えばいいのか

    useEffectはReactの中でも扱いの難しいフックとして知られています。Reactで開発を行う中でuseEffectを検討するタイミングや適切な使い方について悩んだ経験のある方も多いのではないでしょうか。 記事では、useEffectの目的を把握し、どのような場合にuseEffectの使用を検討すべきかについて考えていきたいと思います。 コンポーネントの純粋性と副作用 まずuseEffectについて考える前に、コンポーネントの純粋性について理解する必要があります。Reactにおいて純粋性は重要な概念の1つです。 前提として、Reactではすべてのコンポーネントが純関数あることを仮定しています。 Reactは、あなたが書くすべてのコンポーネントが純関数であると仮定しています。 参照:https://ja.react.dev/learn/keeping-components-pure#

    結局 useEffect はいつ使えばいいのか
    jay-es
    jay-es 2024/07/11
    エフェクトは、特定のイベントではなくレンダー自体によって引き起こされる副作用。useEffect はレンダリングとエフェクトを分離し、レンダー結果が画面に反映されるまでコードの実行を遅らせる
  • 【useEffect】初回にも実行されて困るなら《何をキッカケに、どう更新されるか》を見直せ - Qiita

    useEffect を使って「初回以外の再レンダリング時に実行される処理」を書くにはどうすれば良いのか? という疑問を、たまに目にします。 たとえば、以下のような仕様の、「商品価格を編集する画面」を作ることを考えてみましょう。 日での販売価格入力 ページ読み込み時には初期値が入っている アメリカでの販売価格入力 ページ読み込み時には、初期値が入っている 日での販売価格入力に入力するたび、その1/100の値が自動で入力される あくまで、入力の参考にするため、というイメージ この欄に入力すれば、上書きできる そもそも、こういった自動入力は「入力するたび」ではなく、「フォーカスを外したとき」にするのが定石だと思いますが、 useEffect の話がしたいので、あえてこのような仕様に設定しています。 ❌️ useEffect を使って変更検知しようとすると暴発する 《日での販売価格 japa

    【useEffect】初回にも実行されて困るなら《何をキッカケに、どう更新されるか》を見直せ - Qiita
    jay-es
    jay-es 2024/06/28
    useEffect は「初回・ニ回目以降」といった考え方で作られていない
  • そのuseRef+useEffect、refコールバックのほうが良いかも? - Qiita

    Reactにおいて、useEffectのユースケースとして知られているのが、DOMノードに直接アクセスしなければいけない場合です。useRefでDOMノードをrefオブジェクトに取得し、エフェクト内からDOMノードにアクセスするというのがその場合の基的なやり方です。 このようなuseRef + useEffect の使い方は、問題ない場合もありますが、実は別の手段を使った方がいい場合もあります。その場合に別の手段として適しているのがrefコールバックという機能です。 そこで、この記事ではどのような場合にuseRef + useEffectよりもrefコールバックが適しているのか、そしてrefコールバックを使う場合の注意点について解説します。 復習: refコールバックとは React DOMでは、組み込み要素(divなどHTMLの要素)に対してrefという特殊なpropを与えることができ

    そのuseRef+useEffect、refコールバックのほうが良いかも? - Qiita
    jay-es
    jay-es 2024/06/20
    useEffect はレンダリングのサイクル、ref コールバックは DOM ノードのライフサイクル
  • 【React】useEffectの関数はいつ実行される?(むずかしくないReact #1) 【VOICEVOX解説】

    「セットアップ→クリーンアップ」のエフェクトのライフサイクルから、依存配列の正しい指定のしかた(ESLint による自動チェック・補完)まで、ざっくり解説 「依存配列によってタイミングが異なるの、ややこしすぎる!」「なるべく使わないと言われているなら、設計として優れてないの?」という疑問に答えます! # 関連記事 - https://zenn.dev/yumemi_inc/articles/react-effect-simply-explained - https://ja.react.dev/learn/lifecycle-of-reactive-effects - https://ja.react.dev/learn/removing-effect-dependencies # BGM・効果音 - 効果音ラボ様: https://soundeffect-lab.info/

    【React】useEffectの関数はいつ実行される?(むずかしくないReact #1) 【VOICEVOX解説】
  • 過激派が教える! useEffectの正しい使い方

    ReactのuseEffectは、フックの中でも使い方が難しいものの一つです。そこで、この記事では筆者が考えるuseEffectの望ましい使い方を皆さんに伝授します。 基原則 技術やその要素の使い方を考えるにあたって、筆者が好んでいるのは基原則を置いてそれに基づいて判断することです。ということで、この記事ではまず筆者が考えるReactの基原則を紹介します。 筆者がもっとも重要視する原則は、ReactUIライブラリであるということです。つまり、ReactにはUIの管理をさせるべきであって、その他のことはReactの役目ではないということです。Reactが難しいと思う人がいる場合、何でもかんでもReactにやらせようとするから余計に難しくなっているのだと思います。 例えばアプリケーションのロジックの管理やそれに付随するステートの管理はReactの役目ではないので、Reactの外部で処理

    過激派が教える! useEffectの正しい使い方
    jay-es
    jay-es 2023/05/03
    useEffect は UI の管理のために使うもので、値の変化に反応するために使うのは良くない。クリーンアップ関数が無かったり、依存配列が最適化を超えた意味を持っていたら不適格。
  • 【React】useEffect の標準動作は「依存配列の中身が変わると実行」ではない - Qiita

    useEffect とは何か、ご存知ですか? useEffect? 知ってるよ。 依存配列に入れた値が変更されるたびに関数が実行されるフックでしょ? これは半分正解ですが、半分間違っています。 useEffect のデフォルトの挙動は「レンダーのたびに毎回実行」です。 依存配列は「変わった時に実行する」というより「変わらなければスキップ」と捉えたほうが良いかもしれません。 useEffect は再レンダー以外の変化を検知できません。 特にミュータブルなオブジェクトが絡む場合は注意 React 公式のドキュメントの解説を見ながら、以上の2つのポイントに絞って、誤解を解いていこうと思います。 宣伝 useMemo, useState についても記事を書きました。よかったらこちらも確認してください。 2023/10/03 追記: ブラッシュアップしました ブラッシュアップしたので、そちらの記事も

    【React】useEffect の標準動作は「依存配列の中身が変わると実行」ではない - Qiita
    jay-es
    jay-es 2022/12/01
    "useEffect の依存配列は「変わった時に実行する」というより「変わらなければスキップ」"
  • useEffect完全ガイド

    あなたは Hooks を使って複数のコンポーネントを書きました。ちょっとしたアプリも作ったことがあるでしょう。満足もしている。API にも慣れて、その過程でコツも掴んできました。しかも重複したロジックを転用できるよう Custom Hooks を作り、同僚に自慢して見たり。 でも useEffect を使う度、いまいちピンときません。class のライフサイクルとは似ているけど、何かが違う。そしていろんな疑問を抱き始めます。 🤔 componentDidMount を useEffect で再現する方法は? 🤔 useEffect 内で正確に非同期処理を行う方法とは? []ってなに? 🤔 関数をエフェクトの依存関係として記すべき? 🤔 非同期処理の無限ループがたまに起こるのはなぜ? 🤔 古い state か props がエフェクト内にたまに入るのはなぜ? 私も Hooks を使

  • 1