国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
プロジェクトの要件
開発環(huán)境のセットアップ
useStateフック
useSocketフック
useImmerフック
最終的なタッチと完全なコード
ホームページ ウェブフロントエンド CSSチュートリアル 100行のコードでReactフックを使用してチャットアプリを構築する

100行のコードでReactフックを使用してチャットアプリを構築する

Apr 19, 2025 am 10:16 AM

100行のコードでReactフックを使用してチャットアプリを構築する

このチュートリアルは、驚くほど簡潔なコードで機能的なチャットアプリケーションを構築することにより、Reactフックの力を示しています。以前の記事では、Reactフックが導入され、関數(shù)を使用してコンポーネントを作成する能力を紹介しています。このチュートリアルは、フックが開発を簡素化し、ボイラープレートを削減する方法を示して、さらにそれを取り上げます。

いくつかのオープンソースオプションを含むいくつかのReactフックを活用して、プロセスを合理化し、機能を効率的に構築します。これらの事前に構築されたフックは、確立された標準に準拠しており、コードセキュリティと保守性を高めます。

プロジェクトの要件

チャットアプリケーションには次のものが含まれます。

  • サーバーからの過去のメッセージの取得。
  • グループチャットルームの機能。
  • ユーザー接続と切斷のリアルタイム更新。
  • メッセージの送信と受信。

仮定:

  • サーバーはブラックボックスとして扱われ、単純なソケットを介して通信します。
  • スタイリングは、単一のCSSファイル(リンクリポジトリで使用可能)で処理されます。

開発環(huán)境のセットアップ

このプロジェクトには、node.jsとnpm(ノードパッケージマネージャー)が必要です。必要に応じてそれらをインストールしてください。次に、Create Reactアプリを使用してReactプロジェクトを作成します。

 NPX CREATE-REACT-APPソケットクライアント
CDソケットクライアント
NPM開始

http://localhost:3000に移動して、デフォルトのウェルカムページを表示します。使用されるフックの周りにチュートリアルを構成します。

useStateフック

useStateフックはコンポーネント狀態(tài)を管理します。クラスコンポーネントでthis.state使用する代わりに、 useStateを使用して、ユーザー名のように永続的なデータを保存します。 useState変數(shù)の更新は、コンポーネントを自動的に再レン??ダリングします。

フックをインポートします:

 「React」からReact、{UseState}をインポートします。

単純なコンポーネントは、 id変數(shù)に基づいて、ログインした場合、ログインした場合、またはログインフォームを表示します。

 // app.js
「React」からReact、{UseState}をインポートします。
Import './index.css';

Export Default()=> {
  const [id、setid] = uesestate( "");
  const [nameinput、setnameInput] = uesestate( "");
  const [room、setroom] = uesestate( "");

  const handleSubmit = e => {
    E.PreventDefault();
    if(!nameInput){
      return alert( "name can couns ve vey");
    }
    setid(nameinput); //修正:名前の代わりにnameinputを使用します
    socket.emit( "join"、nameinput、room); //修正:名前の代わりにnameinputを使用します
  };

  // ...(コンポーネントの殘り)
};

これは、ログインステータスを管理するためのuseState示しています。

useSocketフック

Open-Source useSocket Hookは、socket.ioライブラリを使用してサーバー接続を管理します。これは、標準のsocket.ioクライアントのグローバル宣言と比較して、WebSocket接続に対するより管理しやすいアプローチを提供します。

フックをインストールします:

 npm use-socket.io-clientを追加します

基本的な使用法:

 const [socket] = useSocket( 'socket-url');

インポートと初期化:

 「use-socket.io-client」からuseSocketをインポートします。
const [socket] = useSocket( '<your-socket-url> ');
socket.connect();
console.log(socket);</your-socket-url>

接続のブラウザコンソールを確認してください。

useImmerフック

useImmerフックは、アレイとオブジェクトの不変の狀態(tài)管理を簡素化します。元の狀態(tài)の直接的な突然変異を防ぎます。これは、オンラインユーザーとメッセージのリストを管理するために重要です。

フックをインストールします:

 npm use-immerを追加します

基本的な使用法:

 const [data、setData] = useimmer(defaultValue);

setData 、安全な操作のためのドラフトコピーを作成し、元の狀態(tài)がそのままであることを保証します。

 setdata(draft => {
  drawt.push(newItem);
});

EffectフックuseEffect

組み込みのuseEffectフックは、レンダリング後にコードを実行します。ソケットリスナーを処理し、冗長なメッセージディスプレイを避けるために使用します。

輸入:

 Reactをインポート、{useState、useefcect} from 'React';

Messagesコンポーネントはメッセージと更新をレンダリングします。

 const messages = props => propss.data.map(m =>(
  m [0]!== ''?<div> {m [0]}:{m [1]}</div> :<div classname="innermsg"> {m [1]}</div>
));

useEffect內のソケットロジックは、繰り返しメッセージレンダリングを防ぎます。

 effect(()=> {
  socket.on( 'update'、message => setMessages(draft => {
    drawt.push([''、message]);
  }));
  // ...他のソケットリスナー
}、[]);

「參加」メッセージは、さらなるリスナーをトリガーします。

最終的なタッチと完全なコード

最終的なアプリには次のことが必要です。

  • オンラインユーザーを表示するOnlineコンポーネント。
  • オンラインユーザー向けのuseImmerフックとソケットリスナー。
  • メッセージ送信ハンドラー。

完全なApp.jsここに含めるには広すぎますが、完全なコードはGithubで利用できます(元の記事で提供されているリンク)。

このチュートリアルは、最小限のコードで複雑なアプリケーションを構築するためのReactフックの効率を示しています。この例は、機能的なチャットアプリケーションを紹介しますが、原則は幅広いプロジェクトに適用できます。

以上が100行のコードでReactフックを使用してチャットアプリを構築するの詳細內容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負荷を組み合わせ、過度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお勧めします。

外部対內部CSS:最良のアプローチは何ですか? 外部対內部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

Autoprefixerとは何ですか?それはどのように機能しますか? Autoprefixerとは何ですか?それはどのように機能しますか? Jul 02, 2025 am 01:15 AM

Autoprefixerは、ターゲットブラウザスコープに基づいてCSS屬性にベンダープレフィックスを自動的に追加するツールです。 1.エラーで接頭辭を手動で維持する問題を解決します。 2. PostCSSプラグインフォーム、CSSを解析し、プレフィックスする必要がある屬性を分析し、構成に従ってコードを生成する屬性を分析します。 3.使用手順には、プラグインのインストール、ブラウザーリストの設定、ビルドプロセスでそれらを有効にすることが含まれます。 4。メモには、接頭辭を手動で追加しない、構成の更新を保持すること、すべての屬性ではなくプレフィックスを維持することが含まれ、プリ??プロセッサでそれらを使用することをお勧めします。

CSSケース感度:重要なことを理解する CSSケース感度:重要なことを理解する Jun 20, 2025 am 12:09 AM

cssismostlycase-inssensitive、buturlsandfontfamilynamesarecase-sensitive.1)propertiesandvalueslikecolor:red; areotcase-sensitive.2)urlsmustmatchtheserver'scase、例えば、/畫像/logo.png.3)

conic-gradient()関數(shù)とは何ですか? conic-gradient()関數(shù)とは何ですか? Jul 01, 2025 am 01:16 AM

TheConic-Gradient()functionsscreateScular勾配の勾配は、測定されていることを確認してください

粘著性ヘッダーまたはフッターを作成するためのCSSチュートリアル 粘著性ヘッダーまたはフッターを作成するためのCSSチュートリアル Jul 02, 2025 am 01:04 AM

to CreateStickyheadersandfooterswithcss、使用ポジション:Stickyforheaderswithtopvalueandz-index、ParentContainersdon’trestrictit.1.forstickyheaders:Setposition:Sticky、Top:0、Z-Index、およびBackgroundColor.2

CSSカスタムプロパティの範囲は何ですか? CSSカスタムプロパティの範囲は何ですか? Jun 25, 2025 am 12:16 AM

CSSカスタムプロパティの範囲は宣言のコンテキストに依存します。通常、グローバル変數(shù)は次のように定義されます。一方、ローカル変數(shù)は、スタイルのコンポーネント化と分離のために特定のセレクター內で定義されます。たとえば、.cardクラスで定義されている変數(shù)は、クラスとその子供に一致する要素でのみ使用できます。ベストプラクティスには以下が含まれます。1。使用:ルートトピック色などのグローバル変數(shù)を定義する。 2。コンポーネント內のローカル変數(shù)を定義して、カプセル化を実裝します。 3.同じ変數(shù)を繰り返し宣言しないでください。 4.セレクターの特異性によって引き起こされる可能性のあるカバレッジの問題に注意してください。さらに、CSS変數(shù)はケースに敏感であり、エラーを回避するために使用する前に定義する必要があります。変數(shù)が未定義の場合、または參照が失敗した場合、フォールバック値またはデフォルト値の初期が使用されます。デバッグは、ブラウザ開発者を介して実行できます

CSSアニメーションの可能性のロックを解除:ディープダイビング CSSアニメーションの可能性のロックを解除:ディープダイビング Jun 20, 2025 am 12:14 AM

cssanimationsenhancewebpagesbyurebrovinguserexperienceantity.1)usetransitionsforsmoothstylechanges、asinthebuttoncolorexample.2)雇用キーフレーズフォードテイル型の裝具、noceethebouncinging.3)

See all articles