ライフサイクルのどの時点で小道具を変更する必要がありますか?

vkjb38sjhbv98h4jgvx98hah3fef

いくつかの小道具を受け取るreactコンポーネントがあります。これらの小道具は、使用可能にするために別の構造にマップする必要があります(selectの場合、ストアとは異なる構造が必要です)。ライフサイクルのどの時点でこれを行うべきか疑問に思っています。

ドキュメントを読みました:https//facebook.github.io/react/docs/component-specs.html、そしてレンダリング関数を純粋に保つことをお勧めします:

render()関数は純粋である必要があります。つまり、コンポーネントの状態を変更せず、呼び出されるたびに同じ結果を返し、DOMからの読み取りやDOMへの書き込み、またはブラウザーとの対話を行いません。

今、私はそれがそうではなく、私がそれらを変更していないpropsので、マップすることはまだ大丈夫stateだと思います:

import React from 'react';

export default class IndicatorSelect extends React.Component {
  constructor(props) {
    super(props);
  }

  render() {
    const options = this.props.store.items.map(item => ({ value: item.id, label: item.name }));

    return (
      <div>Display the data in some way here: {options.value} {options.label}</div>
    );
  }
}

ThisComponent.propTypes = {
  store: React.PropTypes.object.isRequired,
};

これは推奨される方法ですか、それとも親コンポーネントがこのコンポーネントに渡される小道具のフォーマットを担当する必要がありますか?または、これをライフサイクル方式で実行する必要がありますか、それともまったく異なる方法で実行する必要がありますか?

リュボミール

はい、@ selvagszのコメントは正しいです-あなたがそれを頻繁に行わない限り、props内部の正規化renderはそれほど悪くはありません。「多すぎる」場合はprops、を正規化するコンテナコンポーネントを作成し、レンダリングのみを処理するプレゼンテーションコンポーネントに渡します。

質問に答えるのは簡単ではありませんが、私が従う経験則は次のとおりです。

プレゼンテーションコンポーネントは、レンダリングのみを処理するように、可能な限り最も便利で正規化された方法で小道具を受け取る必要があります。

ただし、例のように正規化する場合、追加のコンテナコンポーネントを作成することは意味がありません。この時点では、オーバーヘッドが大きすぎます。小道具を変換することの苦痛を感じ始めたら、コンテナコンポーネントを作成して変換させます。または、すでにコンテナである場合は、親で実行します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ReactJS:小道具の変更を検出するためにどのライフサイクルメソッドを使用する必要がありますか?

分類Dev

サイクルで何を変更する必要がありますか?

分類Dev

C#でクラスを作成します。どのファイルを使用する必要がありますか?

分類Dev

MongoClientのライフサイクルはどのように機能する必要がありますか?

分類Dev

このフックを使用する場合、すべての小道具をuseCallbackまたはuseMemoでラップする必要がありますか?

分類Dev

ファイルのコピー時間を変更するには、どのプロパティを設定する必要がありますか?

分類Dev

小道具の一致オブジェクトを参照するには、どのTypeScriptタイプを使用する必要がありますか?

分類Dev

画像のスタイルを変更するか、画像をフラッターで変更する必要がある画像をクリックします

分類Dev

onDestroy()イベント時に、ライフサイクルでremoveObserverを呼び出す必要がありますか?

分類Dev

GUIのサイズを変更するには、どの方法を使用する必要がありますか?

分類Dev

ソースを要求するためにどの小道具タイプをチェックする必要がありますか?

分類Dev

既存の機能の改善点である変更には、どのCommitizenタイプを使用する必要がありますか?

分類Dev

Android Studioでアイコンシンボルを変更するには、どの.pngファイルを置き換える必要がありますか

分類Dev

どのライフサイクルフックをリクエストしてすぐにsetStateにする必要がありますか?

分類Dev

〜300000ファイルをトリミング+サイズ変更する必要があります。ランタイム= 4日以上。bashスクリプトを高速化するにはどうすればよいですか?

分類Dev

Javaファイルで編集するときはいつでも、クラスファイルでそれらの変更を適用するためにApacheサーバーを再起動する必要があります

分類Dev

CSVファイルの日付を変更する必要があります

分類Dev

モバイルサイトの画像のサイズを変更する必要があります

分類Dev

ソケットの受信バッファサイズをいつ変更する必要がありますか?

分類Dev

コンテンツを表示するには、JFrameのサイズを変更する必要があります。どうすれば修正できますか?

分類Dev

マイクロサービスの通信方法を変更する必要がありますか?

分類Dev

サイズ変更後にビットマップをリサイクルする必要がありますか?

分類Dev

URLがクリックされた場合、ファイル名を変更する必要があります。どうすればよいですか?

分類Dev

文字列からファイルのみの色を変更する必要があります

分類Dev

フックとReduxを使用したReactJSのグッドプラクティス。各コンポーネントでuseSelectorを使用する必要がありますか、それとも小道具を介して渡す必要がありますか?

分類Dev

ファイルの変更時にノードサーバーを再起動する必要があるのはなぜですか?

分類Dev

サブドメインのCSSファイルをメインドメインからどのようにリンクする必要がありますか?

分類Dev

Azureクラウドサービスはファイルをどこに保存する必要がありますか?

分類Dev

classNameで破壊小道具の割り当てを使用する必要があります

Related 関連記事

  1. 1

    ReactJS:小道具の変更を検出するためにどのライフサイクルメソッドを使用する必要がありますか?

  2. 2

    サイクルで何を変更する必要がありますか?

  3. 3

    C#でクラスを作成します。どのファイルを使用する必要がありますか?

  4. 4

    MongoClientのライフサイクルはどのように機能する必要がありますか?

  5. 5

    このフックを使用する場合、すべての小道具をuseCallbackまたはuseMemoでラップする必要がありますか?

  6. 6

    ファイルのコピー時間を変更するには、どのプロパティを設定する必要がありますか?

  7. 7

    小道具の一致オブジェクトを参照するには、どのTypeScriptタイプを使用する必要がありますか?

  8. 8

    画像のスタイルを変更するか、画像をフラッターで変更する必要がある画像をクリックします

  9. 9

    onDestroy()イベント時に、ライフサイクルでremoveObserverを呼び出す必要がありますか?

  10. 10

    GUIのサイズを変更するには、どの方法を使用する必要がありますか?

  11. 11

    ソースを要求するためにどの小道具タイプをチェックする必要がありますか?

  12. 12

    既存の機能の改善点である変更には、どのCommitizenタイプを使用する必要がありますか?

  13. 13

    Android Studioでアイコンシンボルを変更するには、どの.pngファイルを置き換える必要がありますか

  14. 14

    どのライフサイクルフックをリクエストしてすぐにsetStateにする必要がありますか?

  15. 15

    〜300000ファイルをトリミング+サイズ変更する必要があります。ランタイム= 4日以上。bashスクリプトを高速化するにはどうすればよいですか?

  16. 16

    Javaファイルで編集するときはいつでも、クラスファイルでそれらの変更を適用するためにApacheサーバーを再起動する必要があります

  17. 17

    CSVファイルの日付を変更する必要があります

  18. 18

    モバイルサイトの画像のサイズを変更する必要があります

  19. 19

    ソケットの受信バッファサイズをいつ変更する必要がありますか?

  20. 20

    コンテンツを表示するには、JFrameのサイズを変更する必要があります。どうすれば修正できますか?

  21. 21

    マイクロサービスの通信方法を変更する必要がありますか?

  22. 22

    サイズ変更後にビットマップをリサイクルする必要がありますか?

  23. 23

    URLがクリックされた場合、ファイル名を変更する必要があります。どうすればよいですか?

  24. 24

    文字列からファイルのみの色を変更する必要があります

  25. 25

    フックとReduxを使用したReactJSのグッドプラクティス。各コンポーネントでuseSelectorを使用する必要がありますか、それとも小道具を介して渡す必要がありますか?

  26. 26

    ファイルの変更時にノードサーバーを再起動する必要があるのはなぜですか?

  27. 27

    サブドメインのCSSファイルをメインドメインからどのようにリンクする必要がありますか?

  28. 28

    Azureクラウドサービスはファイルをどこに保存する必要がありますか?

  29. 29

    classNameで破壊小道具の割り当てを使用する必要があります

ホットタグ

アーカイブ