2015-12-13 11 views
7

私はreduxアプリケーションの配線を終了しました。これまでのところ素晴らしいです。ただし、状態は巨大なストアに格納されているため、データにアクセスするモデルはありません。還元店のデータの再利用可能な計算のベストプラクティス

たとえば、ユーザーに関する情報を格納するモデルクラスがあります。私は通常、display_nameというクラスに関数を追加し、その名前のさまざまな部分をインテリジェントに組み合わせます。それで、私の異なる見解は、それ自体を計算する方法を知る必要があるのではなく、単にdisplay_nameと呼ぶことができます。

Reduxは、計算された値を状態に格納しないように明示しているため、コンポーネントで定義されたままになります。これはおそらく正しいとは言えません。なぜなら、必要とするすべてのコンポーネントでこのコードを複製することになるからです。

このロジックを保存する場所はどこですか?

答えて

7

最も簡単な方法は、このデータを計算し、多くのコンポーネントのmapStateToProps関数で使用できる別のモジュールに入れるためのユーティリティ関数を作成することです。超簡単な例:ReduxのドキュメントでComputing Derived Dataページ毎の

import { displayName } from "./utils"; 

function mapStateToProps(state) { 
    return { 
    displayName: displayName(state.user) 
    }; 
} 

function MyComponent(props) { 
    return <div>Name: {props.displayName}</div>; 
} 

export default connect(mapStateToProps)(MyComponent); 
1

は、提案されたアプローチは、選択とメモ化を処理するためのReselectライブラリを使用しています。

「createSelector」という用語が含まれているJavascriptプロジェクトでGithubを検索すると、Reselectをさまざまな方法で使用している数多くの実際のアプリケーションが見つかります。ここに私が登場した3つがあります:jfurrow/floodFH-Potsdam/shifted maps、およびmadou/GW2 Armory

関連する問題