(コレクション) React でのよくある面接の質問の紹介
この記事では、React でよく使用される面接の質問 (コレクション) を紹介します。必要な方は参考にしていただければ幸いです。
以下は、React に関してよく使用される面接の質問のリストです:
面接官でも採用担当者でも、次の質問を参照できます
必ずブックマークしてください
React の仕組み
React は仮想 DOM (仮想 DOM) を作成します。コンポーネントの状態が変化すると、React は最初に「差分」アルゴリズムを通じて仮想 DOM 内の変更をマークします。2 番目のステップは調整で、DOM は差分の結果で更新されます。
React を使用する利点は何ですか。
render 関数を見るだけで、コンポーネントがどのようにレンダリングされるかを簡単に知ることができます。
JSX の導入により、コンポーネント コードが読みやすくなり、コンポーネントのレイアウトやコンポーネントが相互に参照する方法を理解しやすくなります
サーバー側レンダリングをサポートし、SEO とパフォーマンスを向上させることができます
簡単to test
React は View レイヤーのみに焦点を当てているため、他のフレームワーク (Backbone.js、Angular.js など) で使用できます
プレゼンテーション コンポーネントとコンテナ コンポーネント
プレゼンテーション コンポーネントは、コンポーネントの外観を重視します。 Display は特に props を介してデータとコールバックを受け入れ、独自の状態を持つことはほとんどありませんが、表示コンポーネントが独自の状態を持つ場合、通常はデータの状態ではなく UI の状態のみを考慮します。
コンテナ コンポーネントは、コンポーネントがどのように動作するかに重点を置いています。コンテナ コンポーネントは、表示コンポーネントまたは他のコンテナ コンポーネントにデータと動作 (動作) を提供し、Flux アクション
を呼び出し、それらを表示コンポーネントへのコールバックとして提供します。コンテナ コンポーネントは (他のコンポーネントの) データのソースであるため、多くの場合ステートフルです。
クラス コンポーネントと機能コンポーネントの違いは何ですか。
クラス コンポーネントでは、コンポーネント自体などの追加機能を使用できるだけでなく、ステート フックやライフ サイクル フックもコンポーネントを有効にします。ストアに直接アクセスして状態を維持するには
コンポーネントが props のみを受け取り、コンポーネント自体をページにレンダリングする場合、そのコンポーネントは「ステートレス コンポーネント」です。そのようなコンポーネントは純粋な関数を使用して作成できます。このようなコンポーネントは、ダム コンポーネントまたはプレゼンテーション コンポーネントとも呼ばれます。
(コンポーネントの) 状態とプロパティ (props) の違いは何ですか。
State は、コンポーネントのデフォルト値に使用されるデータ構造です。コンポーネントのマウント時に必要なデータ。状態は時間の経過とともに変化する可能性がありますが、ほとんどの場合、ユーザー イベントの動作の結果として変化します。
Props (プロパティの略) はコンポーネントの構成です。小道具は親コンポーネントから子コンポーネントに渡され、子コンポーネントに関する限り、小道具は不変です。コンポーネントはそれ自身の props を変更できませんが、そのサブコンポーネントの props をまとめることはできます (統合管理)。小道具は単なるデータではありません。小道具を介してコールバック関数を渡すこともできます。
(コンポーネント) ライフサイクル メソッドの違いを指摘します
componentWillMount -- 主にルート コンポーネントでのアプリケーション構成に使用されます
componentDidMount -- すべてを使用できますここで完了 DOM なしでは実行できないすべての設定と、必要なすべてのデータの取得を開始します。イベント リスニングを設定する必要がある場合は、ここで完了することもできます。
componentWillReceiveProps -- この定期関数は状態に作用します。特定の prop の変更が原因です。 遷移
shouldComponentUpdate -- コンポーネントの過剰レンダリングが心配な場合は、 shouldComponentUpdate を使用すると、コンポーネントが新しい props を受け取った場合に再レンダリングを防ぐことができるため、パフォーマンスを向上させることができます。 shouldComponentUpdate は、コンポーネントを再レンダリングする必要があるかどうかを決定するブール値を返す必要があります。
componentWillUpdate -- ほとんど使用されません。コンポーネントのcomponentWillReceivePropsと shouldComponentUpdate を置き換えるのに使用できます(ただし、前のプロパティにはアクセスできません)
componentDidUpdate -- propまたはstateの変更に応じてDOMを更新するためによく使用されます
componentWillUnmount -- ここで、ネットワーク要求をキャンセルするか、コンポーネント
Ajax リクエストは React コンポーネントのどこで開始する必要がありますか
React コンポーネントでは、ネットワーク リクエストは、componentDidMount で開始する必要があります。このメソッドは、コンポーネントが最初に「マウント」される (DOM に追加される) ときに実行され、コンポーネントのライフサイクルで 1 回だけ実行されます。さらに重要なのは、コンポーネントがマウントされる前にそれを保証できないことです。 Ajax リクエストが完了した場合は、アンマウントされたコンポーネントに対して setState を呼び出そうとしていることを意味しますが、これは機能しません。 ComponentDidMount でネットワーク要求を行うと、更新する準備ができているコンポーネントが存在することが保証されます。
制御コンポーネントとは
HTML では、、
React における refs の役割
Ref は、DOM ノードまたは React コンポーネントへの参照を取得するために使用できます。 ref を使用する場合の良い例としては、フォーカス/テキスト選択の管理、コマンド アニメーションのトリガー、サードパーティの DOM ライブラリとの統合などが挙げられます。 String Ref とインライン ref コールバックの使用は避けてください。 Refs コールバックは React によって推奨されています。
高次コンポーネントとは何ですか?
高次コンポーネントは、コンポーネントをパラメータとして受け取り、新しいコンポーネントを返す関数です。 HOC を使用すると、コード、ロジック、およびブートストラップ抽象化を再利用できます。最も一般的なのは、おそらく Redux の接続機能です。 HOC の最善の方法は、ツール ライブラリと単純な構成を単純に共有することに加えて、React コンポーネント間で動作を共有することです。同じことを行うために別の場所に多くのコードを書いていることに気付いた場合は、コードを再利用可能な HOC にリファクタリングすることを検討する必要があります。
演習
入力を反転する HOC を作成する
API から受信コンポーネントにデータを提供する HOC を作成する
実装する HOC を作成するshouldComponentUpdate 調整を回避するには HOC
React.Children.toArray を通じて受信コンポーネントの子コンポーネントを並べ替える HOC を作成します
アロー関数を使用する利点は何ですか
スコープの安全性: アロー関数の前に、新しく作成された各関数には独自の this 値があります (コンストラクターでは、これは新しいオブジェクトです。厳密モードでは、関数呼び出しの this は未定義です。関数が「オブジェクト」と呼ばれる場合)メソッド」、その後に基礎となるオブジェクトなど) が使用されますが、アロー関数はそうではなく、囲んでいる実行コンテキストの this 値を使用します。
シンプル: アロー関数は読み書きが簡単です。
明確: すべてがアロー関数であれば、通常の関数をすぐに使用してスコープを定義できます。開発者はいつでも、次に上位の関数ステートメントを探して this
setState に渡されるパラメータがオブジェクトではなくコールバックであることが推奨される理由
this.props と this.state の更新は非同期である可能性があるため、それらの値は依存できません次の状態を計算します。
コンストラクターで this
をバインドする以外に、他の方法はありますか?
プロパティ初期化子を使用してコールバックを正しくバインドできます。create-react-app はデフォルトでもサポートされています。コールバックではアロー関数を使用できますが、問題は、コンポーネントがレンダリングされるたびに新しいコールバックが作成されることです。
コンポーネントのレンダリングを防ぐ方法
コンポーネントの render メソッドで null を返しても、トリガーされたコンポーネントのライフサイクル メソッドには影響しません
リストをレンダリングするとき、鍵は何ですか?キーを設定する目的は何ですか
キーは、どの項目が変更、追加、削除されたかを React が識別するのに役立ちます。キー 配列内の要素は、(DOM) 要素に安定した ID を与えるように割り当てる必要があります。キーを選択してください。 最良の方法は、リスト項目を一意に識別する文字列を使用することです。安定した ID がない場合は、データ内の ID をキーとして使用することがよくあります。 レンダリングされたアイテムで使用する場合、アイテムのインデックスをキーとして使用してアイテムをレンダリングできますが、アイテムを並べ替えることができる場合、再レンダリングが遅くなる可能性があるため、これはお勧めできません。
(コンストラクター内で) super(props) を呼び出す目的は何ですか。
super() が呼び出される前に、サブクラスはこれを使用できません。ES2015 では、サブクラスはメソッド内で super() を呼び出す必要があります。コンストラクタ。 props を super() に渡す理由は、コンストラクター (サブクラス内) での this.props へのアクセスを容易にするためです。
JSXとは
JSXはJavaScript構文の構文拡張であり、JavaScriptのすべての機能を備えています。 JSX プロダクションの反応 「要素」では、JavaScript 式を中括弧で囲んで JSX に埋め込むことができます。コンパイルが完了すると、JSX 式は通常の式になります。 JavaScript オブジェクト。つまり、if ステートメントおよび for ループ内で JSX を使用し、それを変数に割り当て、引数として受け入れ、関数から返すことができます。
React.createElement を使用して次のコードを書き換える方法
質問:
const element = ( <h1 className="greeting"> Hello, rdhub.cn! </h1> );
回答:
const element = React.createElement( 'h1', {className: 'greeting'}, 'Hello, rdhub.cn!' );
Children
とは
JSX 式では、開始タグ ( など) と終了タグ ( など) の間のコンテンツは、特別な属性として props.children に自動的に渡されます。そのコンポーネント。
このプロパティには、React.Children.map、React.Children.forEach、React.Children.count、React.Children.only、React.Children.toArray など、多くのメソッドが使用できます。
React では、state とは何ですか
State は props に似ていますが、プライベートであり、コンポーネント自体によって完全に制御されます。状態は本質的に、データを保持し、コンポーネントがどのようにレンダリングされるかを決定するオブジェクトです。
create-react-app の依存関係から抜け出す理由は何ですか。
Webpack または Babel のプリセットを構成したいとき。
redux とは
Redux の基本的な考え方は、アプリケーション全体の状態を 1 つのストアに保持することです。ストアは単純なJavaScriptです オブジェクトであり、アプリケーションの状態を変更する唯一の方法は、アプリケーション内でアクションをトリガーし、これらのアクションのリデューサーを作成して変更することです。 州。状態変換全体はリデューサー内で行われるため、副作用はありません。
Redux では、store とは何ですか
Store は、アプリケーション全体の状態を保存する JavaScript オブジェクトです。同時に、Store は次の責任も負います。
getState() を介して状態へのアクセスを許可する
dispatch(action) を介して状態を実行する
subscribe( を介してリスナーを登録する) listener)
subscribe(listener) によって返された関数を通じてリスナーのログアウトを処理します
action とは
Actions は純粋な JavaScript オブジェクトであり、type 属性が必要です。実行中であることを示すアクションのタイプ。基本的に、アクションはアプリケーションからストアにデータを送信するペイロードです。
reducer とは
reducer は、前の状態とアクションをパラメータとして受け取り、次の状態を返す純粋な関数です。
Redux Thunk の役割とは
Redux thunk は、アクションの代わりに関数を返すアクション クリエーターを作成できるミドルウェアです。特定の条件が満たされた場合、サンクを使用してアクション (ディスパッチ) のディスパッチを遅延させることができ、非同期アクション (ディスパッチ) のディスパッチを処理できます。
純粋関数とは何ですか?
純粋関数とは、スコープ外の変数に依存せず、その状態を変更しない関数です。これは、純粋関数であることも意味します。パラメータは常に同じ結果を返します。
以上が(コレクション) React でのよくある面接の質問の紹介の詳細内容です。詳細については、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)

ホットトピック









呼び出しメソッド: 1. クラス コンポーネントの呼び出しは、React.createRef()、ref または props のカスタム onRef 属性の関数宣言を使用して実装できます; 2. 関数コンポーネントおよびフック コンポーネントの呼び出しは、useImperativeHandle または forwardRef を使用して実装できます。子コンポーネントの ref が実装されています。

React カスタム フックは、コンポーネント ロジックを再利用可能な関数にカプセル化する方法であり、クラスを作成せずに状態ロジックを再利用する方法を提供します。この記事では、カプセル化フックをカスタマイズする方法を詳しく紹介します。

React ソースコードをデバッグするにはどうすればよいですか?次の記事では、さまざまなツールで React のソース コードをデバッグする方法について説明し、コントリビューター、create-react-app、vite プロジェクトで React の実際のソース コードをデバッグする方法を紹介します。

React はなぜ Vite をアプリケーション構築の第一の選択肢として使用しないのでしょうか?次の記事では、React が Vite をデフォルトの推奨事項として推奨しない理由について説明します。

React で div の高さを設定する方法: 1. CSS を通じて div の高さを実装します; 2. ステートでオブジェクト C を宣言し、オブジェクトに変更ボタンのスタイルを格納し、A を取得して C の "marginTop" をリセットします. それがキャンです。

この記事では、日常の開発で頻繁に使用される、優れた実用的な React コンポーネント ライブラリを 7 つ紹介します。

この記事では、よりシンプルな React コードを記述するための 10 の実践的なヒントを紹介します。

フロントエンド プロジェクトを開発する場合、状態管理は常に避けられないトピックですが、Vue および React フレームワーク自体が、この問題を解決するための機能をいくつか提供しています。ただし、大規模なアプリケーションを開発する場合は、より標準化された完全な操作ログ、開発者ツールに統合されたタイムトラベル機能、サーバー側レンダリングなどの必要性など、他の考慮事項も多くあります。この記事では、Vue フレームワークを例として、2 つの状態管理ツールである Vuex と Pinia の設計と実装の違いを紹介します。
