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