質問:Reduxの:整理コンテナ、コンポーネント、アクション、および減速
大 React/Reduxアプリケーションでのコンテナ、コンポーネント、アクションや減速を整理するための最も保守性と推奨されるベストプラクティスは何ですか?
私の意見:
現在の傾向は、関連するコンテナコンポーネントの周りに(...アクション、レデューサー、サガ)Reduxの担保を整理するように見えます。例えば
/src
/components
/...
/contianers
/BookList
actions.js
constants.js
reducer.js
selectors.js
sagas.js
index.js
/BookSingle
actions.js
constants.js
reducer.js
selectors.js
sagas.js
index.js
app.js
routes.js
これは素晴らしい機能です。このデザインにはいくつかの問題があるようですが。
問題:
我々はそれがアンチパターンと思われる他の容器からactions
、selectors
またはsagas
にアクセスする必要がある場合。たとえば、カテゴリーや列挙型など、アプリ全体で使用する情報を格納する減縮/状態のグローバル/App
コンテナがあるとします。状態ツリーで、上記の例に続き:
{
app: {
taxonomies: {
genres: [genre, genre, genre],
year: [year, year, year],
subject: [subject,subject,subject],
}
}
books: {
entities: {
books: [book, book, book, book],
chapters: [chapter, chapter, chapter],
authors: [author,author,author],
}
},
book: {
entities: {
book: book,
chapters: [chapter, chapter, chapter],
author: author,
}
},
}
我々は(確かに間違っている?)私たちはどちらか/BookList/selectors.js
でそれを再作成する必要が私たちの/BookList
コンテナ内/App
コンテナからselector
を使用するか、それをインポートする場合/App/selectors
から(これは常にEXACTの同じセレクタですか?いいえ)。これらのappraochesはどちらも私にとっては最適ではないようです。
このユースケースの主な例は、VERY共通の「副作用」モデルであるため、認証(ああ...あなたが嫌いなのは大変です)です。アプリ全体に/Auth
サガ、アクション、セレクタにアクセスする必要があることがよくあります。実際に我々のアプリでは、/Auth
contianerには実際のコンポーネントはありません!
/src
/contianers
/Auth
actions.js
constants.js
reducer.js
selectors.js
sagas.js
上記のさまざまな、しばしば無関係な認証コンテナのすべてのRedux付属品を単に含むだけです。
私はあなたの現在の構造に興味がありますあなたのセレクターをどう使っていますか?コンポーネントが 'BookList'セレクタ関数を使っているとします。あなたの' mapStateToProps'関数を表示できますか?あなたは '状態'を通過していますか?または 'state.booklist' – xiaofan2406