React Docs の最近のレビューから得た重要なポイント
このブログはもともと Medium に投稿されたものです
React 愛好家の皆さん、こんにちは!私は最近 React ドキュメントを詳しく調べたので、学んだことを皆さんと共有したいと思います。これは、React で強固な基盤を構築したい人向けの簡潔で最小限のガイドです。簡単な説明とコード スニペットで中心となる概念を詳しく見てみましょう。
少し長い話になりますが、React の中心となる概念をすべて一度に理解してください。さらに前進するには、これらの概念を要約して再検討することが有益であることがわかります。
目次
- React で考える
- コンポーネントと JSX
- 小道具
- 条件付きレンダリング
- レンダリングリスト
- 純粋なコンポーネント
- UI ツリー
- 対話性とイベント ハンドラー
- 状態
- 制御されたコンポーネント
- 制御されていないコンポーネント
- 参照
- デフォルトの動作の防止
- イベントの伝播
- 複雑な状態の管理
- コンテキスト
- 副作用
- useEffect のベスト プラクティス
- React のルール
- カスタムフック
- フックのルール
React で考える
React は、UI を再利用可能なコンポーネントに分割することです。 React アプリを構築するときは、次のことから始めます:
- UI をコンポーネント階層に分割する
- インタラクティブ性のない静的バージョンの構築
- UI 状態の最小限の表現を特定する
- あなたの州がどこに住むべきかを決定する
- 逆データ フローの追加
参考: https://react.dev/learn/ Thinking-in-react
コンポーネントとJSX
コンポーネントは React アプリケーションの構成要素です。関数ベースまたはクラスベースにすることができます (時代遅れなのでお勧めしません)。 JSX は、JavaScript で HTML のようなコードを記述できるようにする構文拡張機能です。
function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
参考文献:
- コンポーネント: https://react.dev/learn/your-first-component
- JSX: https://react.dev/learn/writing-markup-with-jsx
小道具
Props は、親コンポーネントから子コンポーネントにデータを渡す方法です。これらは読み取り専用であり、コンポーネントを純粋に保つのに役立ちます。
function Greeting(props) { return <p>Welcome, {props.username}!</p>; } // Usage <Greeting username="Alice" />
参考: https://react.dev/learn/passing-props-to-a-component
条件付きレンダリング
React を使用すると、特定の条件に基づいてコンポーネントまたは要素を条件付きでレンダリングできます。
function UserGreeting(props) { return props.isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign in.</h1>; }
参考: https://react.dev/learn/conditional-rendering
レンダリングリスト
React で要素のリストをレンダリングするには、map() 関数を使用します。各アイテムに一意のキー プロップを追加することを忘れないでください。
function FruitList(props) { const fruits = props.fruits; return ( <ul> {fruits.map((fruit) => ( <li key={fruit.id}>{fruit.name}</li> ))} </ul> ); }
参考: https://react.dev/learn/rendering-lists
純粋なコンポーネント
純粋なコンポーネントは、同じプロパティと状態に対して常に同じ出力をレンダリングします。予測可能でテストが簡単です。
function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
参考: https://react.dev/learn/keeper-components-pure
UIツリー
React は、仮想 DOM と呼ばれる UI の内部表現を構築し、維持します。これにより、React は実際の DOM の変更された部分のみを効率的に更新できます。
参考: https://react.dev/learn/ Understanding-your-ui-as-a-tree
インタラクティブ性とイベント ハンドラー
React は合成イベントを使用して、異なるブラウザ間で一貫してユーザー インタラクションを処理します。
function Greeting(props) { return <p>Welcome, {props.username}!</p>; } // Usage <Greeting username="Alice" />
参考: https://react.dev/learn/responding-to-events
州
状態は、コンポーネント内で時間の経過とともに変化するデータに使用されます。 useState フックを使用して、機能コンポーネントに状態を追加します。
function UserGreeting(props) { return props.isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign in.</h1>; }
参考: https://react.dev/learn/state-a-components-memory
管理対象コンポーネント
制御対象コンポーネントの状態は React によって制御されます。
function FruitList(props) { const fruits = props.fruits; return ( <ul> {fruits.map((fruit) => ( <li key={fruit.id}>{fruit.name}</li> ))} </ul> ); }
制御されていないコンポーネント
制御されていないコンポーネントは、DOM 上で状態を直接管理します。
function PureComponent(props) { return <div>{props.value}</div>; }
参照
Ref は、render メソッドで作成された DOM ノードまたは React 要素にアクセスする方法を提供します。
function Button() { const handleClick = () => { alert('Button clicked!'); }; return <button onClick={handleClick}>Click me</button>; }
デフォルト動作の防止
特定のイベントに対するブラウザのデフォルトの動作を停止するには、preventDefault() を使用します。
import React, { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}>Click me</button> </div> ); }
イベントの伝播
React イベントはネイティブ DOM イベントと同様に伝播します。 stopPropagation() を使用すると、イベントのバブリングを防ぐことができます。
function ControlledInput() { const [value, setValue] = useState(''); return <input value={value} onChange={e => setValue(e.target.value)} />; }
複雑な状態の管理
複雑な状態ロジックには useReducer フック、または Redux や Zustand などの状態管理ライブラリの使用を検討してください。
function UncontrolledInput() { return <input defaultValue="Hello" />; }
コンテクスト
コンテキストは、すべてのレベルで props を手動で渡すことなく、コンポーネント ツリーを通じてデータを渡す方法を提供します。
import React, { useRef } from 'react'; function TextInputWithFocusButton() { const inputEl = useRef(null); const onButtonClick = () => { inputEl.current.focus(); }; return ( <> <input ref={inputEl} type="text" /> <button onClick={onButtonClick}>Focus the input</button> </> ); }
参考: https://react.dev/learn/passing-data-deeply-with-context
副作用
副作用とは、データのフェッチや DOM 操作など、実行される関数の範囲外に影響を与える操作です。 useEffect フックを使用して副作用を管理します。
function Form() { const handleSubmit = (e) => { e.preventDefault(); console.log('Form submitted'); }; return <form onSubmit={handleSubmit}>...</form>; }
useEffect のベスト プラクティス
- エフェクトが依存するすべての変数を依存関係配列に常に含めてください。
- エフェクトの依存関係を慎重に考慮して、無限ループを回避してください。
- useEffect の return 関数で副作用をクリーンアップします。
function Parent() { return ( <div onClick={() => console.log('Parent clicked')}> <Child /> </div> ); } function Child() { const handleClick = (e) => { e.stopPropagation(); console.log('Child clicked'); }; return <button onClick={handleClick}>Click me</button>; }
参考文献:
- useEffect は必要ないかもしれません: https://react.dev/learn/you-might-not-need-an-effect
- エフェクトとの同期: https://react.dev/learn/synchronizing-with-Effects
- リアクティブ エフェクトのライフサイクル: https://react.dev/learn/lifecycle-of-reactive-Effects
React のルール
- コンポーネント名は常に大文字で始めてください。
- 自己終了タグを含むすべてのタグを閉じます。
- プロパティを直接変更しないでください。
- 可能な限りコンポーネントを純粋に保ちます。
参考: https://react.dev/reference/rules
カスタムフック
カスタム フックを使用すると、コンポーネント ロジックを再利用可能な関数に抽出できます。
function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
フックのルール
- コンポーネントの最上位レベルでのみフックを呼び出します。
- React 関数コンポーネントまたはカスタム フックからのみフックを呼び出します。
- これらのルールを適用するには、eslint-plugin-react-hooks を使用します。
参考: https://react.dev/reference/rules/rules-of-hooks
これで React の旅は終わりです!覚えておいてください、学ぶための最良の方法は実践することです。プロジェクトの構築を開始し、これらの概念を試してください。さらに詳細が必要な場合は、遠慮せずに React ドキュメントを参照してください。コーディングを楽しんでください!
以上がReact Docs の最近のレビューから得た重要なポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
