このチュートリアルは、驚くほど簡潔なコードで機能的なチャットアプリケーションを構築することにより、Reactフックの力を示しています。以前の記事では、Reactフックが導入され、関数を使用してコンポーネントを作成する能力を紹介しています。このチュートリアルは、フックが開発を簡素化し、ボイラープレートを削減する方法を示して、さらにそれを取り上げます。
いくつかのオープンソースオプションを含むいくつかのReactフックを活用して、プロセスを合理化し、機能を効率的に構築します。これらの事前に構築されたフックは、確立された標準に準拠しており、コードセキュリティと保守性を高めます。
プロジェクトの要件
チャットアプリケーションには次のものが含まれます。
- サーバーからの過去のメッセージの取得。
- グループチャットルームの機能。
- ユーザー接続と切断のリアルタイム更新。
- メッセージの送信と受信。
仮定:
- サーバーはブラックボックスとして扱われ、単純なソケットを介して通信します。
- スタイリングは、単一のCSSファイル(リンクリポジトリで使用可能)で処理されます。
開発環境のセットアップ
このプロジェクトには、node.jsとnpm(ノードパッケージマネージャー)が必要です。必要に応じてそれらをインストールしてください。次に、Create Reactアプリを使用してReactプロジェクトを作成します。
NPX CREATE-REACT-APPソケットクライアント CDソケットクライアント NPM開始
http://localhost:3000
に移動して、デフォルトのウェルカムページを表示します。使用されるフックの周りにチュートリアルを構成します。
useState
フック
useState
フックはコンポーネント状態を管理します。クラスコンポーネントでthis.state
使用する代わりに、 useState
を使用して、ユーザー名のように永続的なデータを保存します。 useState
変数の更新は、コンポーネントを自動的に再レンダリングします。
フックをインポートします:
「React」からReact、{UseState}をインポートします。
単純なコンポーネントは、 id
変数に基づいて、ログインした場合、ログインした場合、またはログインフォームを表示します。
// 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
フックは、アレイとオブジェクトの不変の状態管理を簡素化します。元の状態の直接的な突然変異を防ぎます。これは、オンラインユーザーとメッセージのリストを管理するために重要です。
フックをインストールします:
npm use-immerを追加します
基本的な使用法:
const [data、setData] = useimmer(defaultValue);
setData
、安全な操作のためのドラフトコピーを作成し、元の状態がそのままであることを保証します。
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 サイトの他の関連記事を参照してください。

CSSファイルをHTMLにリンクすることは、HTMLの一部で要素を使用することで実現できます。 1)タグを使用して、ローカルCSSファイルをリンクします。 2)複数のタグを追加することにより、複数のCSSファイルを実装できます。 3)外部CSSファイルは、そのような絶対URLリンクを使用します。 4)ファイルパスとCSSファイルの読み込み順序の正しい使用を確認し、パフォーマンスを最適化すると、CSSプリプロセッサを使用してファイルをマージできます。

FlexBoxまたはグリッドの選択は、レイアウト要件によって異なります。1)FlexBoxは、ナビゲーションバーなどの1次元レイアウトに適しています。 2)グリッドは、雑誌のレイアウトなどの2次元レイアウトに適しています。この2つは、レイアウト効果を改善するためにプロジェクトで使用できます。

CSSファイルを含める最良の方法は、タグを使用してHTMLパーツに外部CSSファイルを導入することです。 1.タグを使用して、外部CSSファイルを導入します。 2。小さな調整のために、インラインCSSを使用できますが、注意して使用する必要があります。 3.大規模プロジェクトでは、@Importを介して他のCSSファイルをインポートするために、SASS以下などのCSSプリプロセッサを使用できます。 4。パフォーマンスのために、CSSファイルをマージし、CDNを使用し、CSSNANOなどのツールを使用して圧縮する必要があります。

はい、Youはrelearnbothlexboxandgrid.1)FlexBoxisidealforone-Dimensional、FlexiblleayoutslikenavigationMenus.2)Gridexcelsintwo-digsignssuchasmagazinelayouts.3)Bothenhanceslaysutibulivedibulisunivedivition、floctonsulururを

独自のコードをリファクタリングするのはどのように見えますか?ジョン・レアは、彼が書いた古いCSSアニメーションを選び、それを最適化するという思考プロセスを歩きます。

cssanimationsArenotintinlentyhardbutrepracticeanderstanding ofcsspropertiesandtimingfunctions.1)

@keyframesispopularduetoitsversitility andpowerincreatingsmoothcssanimations.keytricksinclude:1)defingsmoothtransitionsbetweenstates、2)AnimatingMultipleProperiessimally、3)3)bendorprefixesforbrows -compativity、4)組み合わせwithjavasfo

csScounterSareSareusedTomageautomaticinginginwebdesigns.1)それらは、コンテンツ、リスト、および積極的なものを使用することができます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
