ホームページ  >  記事  >  ウェブフロントエンド  >  「useInsertionEffect」React フックの使用例

「useInsertionEffect」React フックの使用例

WBOY
WBOYオリジナル
2024-08-22 19:14:06535ブラウズ

Use cases for `useInsertionEffect` React hook

イントロ

useEffect フックに精通している人なら誰でも、useLayoutEffect の方が適切な場合もあります。

useInsertionEffect を使用したことのある人はそれほど多くありません。詳しく見てみましょう。

フックの API は useEffect に非常に似ており、セットアップ関数、依存関係配列にコードを追加する必要があり、クリーンアップ関数を返すことができます。

React ドキュメントにこの説明が記載されています。

useInsertionEffect は CSS-in-JS ライブラリの作成者向けです。

これは、主にコンポーネントのマウント時にコードを 1 回実行するなど、他の目的にも役立ちます。イベントリスナーをウィンドウに追加します。

ユースケース

Shiki コード ハイライター

  React.useInsertionEffect(() => {
    initShiki().then((highlight) => {
      setHtml(highlight(content));
    });
  }, [content]);

ウィンドウのイベントリスナー

  useInsertionEffect(() => {
    const popCb = () => {
      const newVal = parse(filterUnknownParamsClient(defaultState));
      state.current = newVal
    };

    window.addEventListener(popstateEv, popCb);

    return () => {
      window.removeEventListener(popstateEv, popCb);
    };
  }, []);

一部のカスタム サブスクリプション

  useInsertionEffect(() => {
    const cb = () => {
      _setState(stateMap.get(stateShape.current) || stateShape.current);
    };
    const unsub = subscribers.add(stateShape.current, cb);

    return () => {
      unsub();
    };
  }, []);

長所と短所

  • このフックの主な利点は、コンポーネントがレンダリングされる前、および他のフックの前にコードを実行できることです。
  • このフック内から useState.setState を使用することは想定されていませんが、これは作業であり、将来変更される可能性があります。
  • フックの実行時までに参照がアタッチされません。

以上が「useInsertionEffect」React フックの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。