カスタムフックを使用してコンポーネント間でロジックを共有する方法は?

Aug 08, 2025

伝言を残す

コンポーネント間でロジックを共有することは、スケーラブルで保守可能な反応アプリケーションを構築するための重要な側面です。フックサプライヤーとして、私はこの目標を達成する上でカスタムフックの力を直接目撃しました。このブログ投稿では、カスタムフックを使用してコンポーネント間でロジックを共有する方法を掘り下げ、実用的な洞察と実際の世界の例を提供します。

カスタムフックの理解

ロジックを共有する方法を探る前に、カスタムフックとは何かを簡単に理解しましょう。カスタムフックは、「使用」という単語から始まり、他のフックを呼び出すことができるJavaScript関数です。コンポーネントロジックを再利用可能な関数に抽出することができます。たとえば、複数のコンポーネントがフォーム入力検証を処理する必要があるシナリオを検討してください。各コンポーネントの検証ロジックを複製する代わりに、カスタムフックを作成できます。

{ueseState} from'react '; const useinputvalidation =(initialValue = '')=> {const [value、setValue] = uesestate(initialValue); const [isvalid、setisvalid] = uesestate(true); const handlechange =(e)=> {const inputvalue = e.target.value; setValue(inputValue); //簡単な検証例:入力が空でないかどうかを確認しますsetisValid(inputValue.trim()!== ''); }; return {value、isvalid、handlechange}; }; Export Default useinputValidation;

このカスタムフックでは、状態管理と入力検証ロジックをカプセル化します。入力検証を処理する必要があるコンポーネントは、ロジックをゼロから実装する代わりに、このフックを使用できるようになりました。

ステートフルな論理を共有します

カスタムフックの主要なユースケースの1つは、コンポーネント間でステートフルなロジックを共有することです。ステートフルロジックには、コンポーネント内で状態を管理することが含まれます。カスタムフックを使用してステートフルなロジックを共有する方法を見てみましょう。

モーダルの可視性を管理する必要がある複数のコンポーネントがあると想像してください。このロジックを処理するカスタムフックを作成できます。

{ueseState} from'react '; const usemodalvisibility =()=> {const [isvisible、setisvisible] = uesestate(false); const showmodal =()=> {setisvisible(true); }; const hidemodal =()=> {setisvisible(false); }; return {isvisible、showmodal、hidemodal}; };デフォルトのusemodalvisibilityをエクスポートします。

これで、モーダルの可視性を管理する必要があるコンポーネントは、このカスタムフックを使用できます。

'react'からのImport React; './usemodalvisibility'からusemodalvisibilityをインポートします。 const modalcomponent =()=> {const {isvisible、showmodal、hidemodal} = usemodalvisibility(); return(<div> <button onclick = {showmodal}> show modal </button> {isvisible &&(<div classname = "modal"> <p>モーダルコンテンツはここにあります</p> <ボタンonclick = {hidemodal}> close modal </button> </div>); };デフォルトのモダルコンポーネントをエクスポートします。

カスタムフックを使用することにより、コンポーネント間のモーダルの可視性を管理するというステートフルロジックを正常に共有しました。

共有側 - 効果ロジック

カスタムフックは、側面の共有にも優れています - 効果ロジック。サイド - 効果には、データフェッチング、サブスクリプション、DOM操作などが含まれます。

APIからデータを取得する必要がある複数のコンポーネントがあるとしましょう。データを取得するデータを処理するカスタムフックを作成できます。

import {ueseState、useefect} from'React '; const sudeatafetching =(url)=> {const [data、setData] = uesestate(null); const [isloading、setisloading] = uesestate(true); const [error、seterror] = uesestate(null); effect(()=> {const fetchdata = async()=> {try {const response = await fetch(url); if(!respons.ok){shrow new error( 'network response was ok');} const response.json(); setdata(result); fetchdata(); [url]); return {data、asloading、error}; };エクスポートデフォルトの使用済みAtafetching;

これで、APIからデータを取得する必要があるコンポーネントは、このカスタムフックを使用できます。

'react'からのImport React; './usedatafetching'から使用されているimport aTafetching; const dataComponent =()=> {const {data、asloading、error} = usedatafetching( 'https://api.example.com/data'); if(isloading){return <p> loading ... </p>; } if(error){return <p> error:{error.message} </p>; } return(<div> {data && <pre> {json.stringify(data、null、2)} </pre>} </div>); };デフォルトのデータコンポーネントをエクスポートします。

バスルームアクセサリー業界の実用的なアプリケーション

フックサプライヤーとして、私は実用的なアプリケーションの重要性を理解しています。たとえば、バスルームアクセサリー業界では、カスタムフックを使用して製品リストの状態を管理できます。

のリストを表示するコンポーネントがあるとしましょうバスルームアクセサリータオルフックそして、表示する別のコンポーネントゴールドバスルームフック。これらの製品のフィルタリングとソートを管理するためのカスタムフックを作成できます。

new england bathroom accessoriesmatte black bathroom accessory set

{ueseState} from'react '; const useproductfiltering =(initialproducts)=> {const [condric、setproducts] = uesestate(initialproducts); const [filter、setfilter] = uesestate( ''); const handlefilterchange =(e)=> {const filtervalue = e.target.value; setFilter(filterValue); const filteredproducts = initialProducts.filter(crowt => crowt.name.tolowercase()。 SetProducts(FilteredProducts); }; return {製品、フィルター、handlefilterchange}; };エクスポートデフォルトの使用プロダクトフィルタリング。

これで、タオルフックとゴールドバスルームフックコンポーネントの両方が、このカスタムフックを使用して製品フィルタリングを管理できます。

結論と行動への呼びかけ

結論として、カスタムフックは、コンポーネント間でロジックを共有するための強力なツールです。それらは、コードの再利用性、保守性を高め、Reactアプリケーションをよりスケーラブルにします。フックサプライヤーとして、私はあなたのプロジェクトでロジックを共有するための高品質のソリューションを提供することに取り組んでいます。

カスタムフックがビジネスにどのように利益をもたらすかについて詳しく知りたい場合、または調達ディスカッションを開始したい場合は、お気軽にご連絡ください。効率的なロジック共有を備えたより良いReactアプリケーションの構築を支援するためにここにいます。

参照

  • カスタムフックに関する公式ドキュメントを反応します
  • Stoyan StefanovとEve Porcelloによる「React:Up and Running」

お問い合わせを送る