React-reduxコードのサイズを減らすにはどうすればよいですか?

sasha_nsk3

ストアからいくつかのオブジェクトを接続したい場合、コードuseSelectorの数を減らすにはどうすればよいですか?

user     = useSelector(store => store.user.user, shallowEqual),
todos    = useSelector(store => store.todos.todos, shallowEqual),
id       = useSelector(store => store.todos.id, shallowEqual),
title    = useSelector(store => store.todos.title, shallowEqual),
deadline = useSelector(store => store.todos.deadline, shallowEqual),
status   = useSelector(store => store.todos.status, shallowEqual),
isOpen   = useSelector(store => store.todos.showPopUp, shallowEqual);

それほど苦痛ではない場合は、react、redux、またはreact-reduxについて一緒に読むための良い本をいくつか書いてください。
ありがとう!

ロレフノン

セレクター関数を作成し、カスタムフックを作成できます。

したがって、上記のシナリオでは、次のことができます。

// selectors.js (selectors shared across files)

const selectUser = store => store.user.user;
const selectTodos = store => store.todos.todos;

// Now in your component: 

const [user, todos, ...] = useSelector(store => [
    selectUser,
    selectStore, 
    ...
].map(f => f(store)), shallowCompareArrayMembers);

// (Feel free to alternatively use object destructuring either).

// Where shallowCompareArrayMembers is a custom comparator to lift shallowEqual over an array:

const shallowCompareArrayMembers = (prev, next) => {
    if (prev.length !== next.length) {
        throw new Error('Expected array lengths to be same');
    }
    for (let i = 0; i < prev.length; i++) {
        if (!shallowEqual(prev[i], next[i])) return false;
    }
    return true;
}

または、同じセレクターセットを複数のコンポーネントで何度も組み合わせていることに気付いた場合は、カスタムフックですべてを抽出します。

const useTodoDetailsSelection = () => ({
    user: useSelector(store => store.user.user, shallowEqual),
    todos: useSelector(store => store.todos.todos, shallowEqual),
    ...
})

次に、そのフックをコンポーネントで使用します。

const MyComponent = () => {
    const {user, todos, ...} = useTodoDetailsSelection();
    // Render components
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Reactでsvgアイコンのサイズを変更するにはどうすればよいですか?

分類Dev

Reactでdivテーブルのサイズを変更するにはどうすればよいですか?

分類Dev

React / Redux-ReactコンポーネントのReduxストアから値を表示するにはどうすればよいですか?

分類Dev

Semantic React UIで入力の幅サイズを拡張するにはどうすればよいですか?

分類Dev

`react-image-gallery`の画像のサイズを縮小するにはどうすればよいですか?

分類Dev

Reactコンポーネントのサイズを変更するにはどうすればよいですか?

分類Dev

サードパーティのライブラリからイベントがトリガーされたときに状態を変更するようにReactコンポーネントに指示するにはどうすればよいですか?

分類Dev

React Nativeで国名から国コードを取得するにはどうすればよいですか?

分類Dev

ReactコンポーネントのExpressエンドポイントからデータを取得するにはどうすればよいですか?

分類Dev

Reactネイティブreduxのレデューサーで配列に要素を追加するにはどうすればよいですか?

分類Dev

ドキュメントイベントからreactコンポーネントへの参照を取得するにはどうすればよいですか?

分類Dev

React Reduxフックを使用する場合、コードの再利用を実現するにはどうすればよいですか?

分類Dev

React / Redux で状態を動的にプリロードするにはどうすればよいですか?

分類Dev

react-navigationで、ヘッダーとTabBarの間の表示領域のサイズを取得するにはどうすればよいですか?

分類Dev

Reactフック `useWindowSize`を使用してMobXストア内のウィンドウサイズを初期化するにはどうすればよいですか?

分類Dev

ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

分類Dev

ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

分類Dev

次のjQueryコードをReactに変換するにはどうすればよいですか?

分類Dev

react-nativeの子ビューで親のサイズを取得するにはどうすればよいですか?

分類Dev

React Nativeマップのマーカーのサイズを変更するにはどうすればよいですか?

分類Dev

react-nativeの動的リストビューでフォントサイズを変更するにはどうすればよいですか?

分類Dev

React-ビデオ反応プレーヤーのサイズを変更するにはどうすればよいですか?

分類Dev

React-Reduxのレデューサーの状態からオブジェクトの配列内の単一の要素から名前フィールドを更新するにはどうすればよいですか?

分類Dev

React NativeのGitHubに保存されているJSONファイルからデータをロードするにはどうすればよいですか?

分類Dev

React Redux アプリのリデューサーで何を返すかを設定するにはどうすればよいですか?

分類Dev

React Native iOSアプリケーションのサイズを縮小するにはどうすればよいですか?

分類Dev

Flaskサーバーから特定のReactコンポーネントに変更を加えるにはどうすればよいですか?

分類Dev

React NativeのサードパーティコンポーネントでScrollViewを使用するにはどうすればよいですか?

分類Dev

reactの複数のフィールドから同じ入力タイプから値を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    Reactでsvgアイコンのサイズを変更するにはどうすればよいですか?

  2. 2

    Reactでdivテーブルのサイズを変更するにはどうすればよいですか?

  3. 3

    React / Redux-ReactコンポーネントのReduxストアから値を表示するにはどうすればよいですか?

  4. 4

    Semantic React UIで入力の幅サイズを拡張するにはどうすればよいですか?

  5. 5

    `react-image-gallery`の画像のサイズを縮小するにはどうすればよいですか?

  6. 6

    Reactコンポーネントのサイズを変更するにはどうすればよいですか?

  7. 7

    サードパーティのライブラリからイベントがトリガーされたときに状態を変更するようにReactコンポーネントに指示するにはどうすればよいですか?

  8. 8

    React Nativeで国名から国コードを取得するにはどうすればよいですか?

  9. 9

    ReactコンポーネントのExpressエンドポイントからデータを取得するにはどうすればよいですか?

  10. 10

    Reactネイティブreduxのレデューサーで配列に要素を追加するにはどうすればよいですか?

  11. 11

    ドキュメントイベントからreactコンポーネントへの参照を取得するにはどうすればよいですか?

  12. 12

    React Reduxフックを使用する場合、コードの再利用を実現するにはどうすればよいですか?

  13. 13

    React / Redux で状態を動的にプリロードするにはどうすればよいですか?

  14. 14

    react-navigationで、ヘッダーとTabBarの間の表示領域のサイズを取得するにはどうすればよいですか?

  15. 15

    Reactフック `useWindowSize`を使用してMobXストア内のウィンドウサイズを初期化するにはどうすればよいですか?

  16. 16

    ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

  17. 17

    ReactとReduxでコンポーネントを再利用するにはどうすればよいですか?

  18. 18

    次のjQueryコードをReactに変換するにはどうすればよいですか?

  19. 19

    react-nativeの子ビューで親のサイズを取得するにはどうすればよいですか?

  20. 20

    React Nativeマップのマーカーのサイズを変更するにはどうすればよいですか?

  21. 21

    react-nativeの動的リストビューでフォントサイズを変更するにはどうすればよいですか?

  22. 22

    React-ビデオ反応プレーヤーのサイズを変更するにはどうすればよいですか?

  23. 23

    React-Reduxのレデューサーの状態からオブジェクトの配列内の単一の要素から名前フィールドを更新するにはどうすればよいですか?

  24. 24

    React NativeのGitHubに保存されているJSONファイルからデータをロードするにはどうすればよいですか?

  25. 25

    React Redux アプリのリデューサーで何を返すかを設定するにはどうすればよいですか?

  26. 26

    React Native iOSアプリケーションのサイズを縮小するにはどうすればよいですか?

  27. 27

    Flaskサーバーから特定のReactコンポーネントに変更を加えるにはどうすればよいですか?

  28. 28

    React NativeのサードパーティコンポーネントでScrollViewを使用するにはどうすればよいですか?

  29. 29

    reactの複数のフィールドから同じ入力タイプから値を取得するにはどうすればよいですか?

ホットタグ

アーカイブ