大きなアプリを持っているときのアクションタイプと状態を整理するベストプラクティスは何ですか? 1つの問題は、同じ名前のアクションと同様の状態なので、同じ名前を使用したいということです。ディスカッションのためだけに、2つのタイトルを更新する場合、アクションタイプにはFIRST_TITLEとSECCOND_TITLE、状態にはfirstTitleとseccondTitleのような名前規約を使用する必要がありますか?あなたがより良い解決策を持っているなら、私に知らせてください。Reduxのアクションタイプと状態を整理する
答えて
大規模なアプリケーションでは、自分のコードをモジュールごとに整理しています。各モジュールは独自のレデューサーやアクションなどを持っています。各モジュールはアクションタイプとアクションクリエイターをエクスポートし、それらをexlusivelyで使用します。これにより、モジュール間の名前の競合が防止されます。実際、アクション名を短くしています。
モジュール/商品/ actionTypes.js:
export const name = "items";
export const UPDATE_TITLE = `${name}/UPDATE_TITLE`;
モジュール/商品/
import * as actionTypes from "./actionTypes";
export const updateTitle = (title) => ({
type: actionTypes.UPDATE_TITLE,
payLoad: title,
});
モジュール/商品/ reducer.js
import * as actionTypes from "./actionTypes";
const initialState = { title: "" };
const reducer = (state = initialState, action) {
switch(action.type) {
case actionTypes.UPDATE_TITLE: {
return {
...state,
title: action.payload,
};
}
}
}
export default reducer;
モジュール/コメントをactions.js /actionTypes.js
export const name = "comments";
export const UPDATE_TITLE = `${name}/UPDATE_TITLE`;
の
モジュール/コメント/
import * as actionTypes from "./actionTypes";
export const updateTitle = (title) => ({
type: actionTypes.UPDATE_TITLE,
payLoad: title,
});
モジュール/コメント/ reducer.jsに
import * as actionTypes from "./actionTypes";
import * as itemActionTypes from "../items/actionTypes";
const initialState = { title: "" };
const reducer = (state = initialState, action) {
switch(action.type) {
case actionTypes.UPDATE_TITLE: {
return {
...state,
title: action.payload,
};
}
case itemActionTypes.UPDATE_TITLE: {
// Do something with the updated item title
}
}
}
export default reducer;
rootReducer.js
import { combineReducers } from "redux";
import { default as itemsReducer } from "modules/items/reducer";
import { default as commentsReducer } from "modules/comments/reducer";
export default combineReducers({
items: itemsReducer,
comments: commentsReducer,
});
をactions.js EDIT:追加レデューサーコメント
に答えるためにのようなものを使用できます。ファイルシステムからアクションとレデューサーを生成します。
私たちは大きなプロジェクトのためにそれを製品に使用しており、その複雑さを本当に助けてくれました。各変換には独自のファイルがあり、これは生成されたアクション名+非同期コードが同じファイルと同じ場所に配置されるようになります。
夏:
それはさらに一歩減速組成物の考え方をとります。あなたのレデューサーを表すファイルを持ち、個々のアクション機能を作成する代わりに、
Reduxの、自動のアプローチは、とにかくあなたのアプリであなたが書くことができますから、今
例
└── store/
├──user/
│ └── index.js
│ └── changeName.js
└──posts/
└── index.js
└── delete.js
をオン状態の各アクション/変換を表現し、動的な機能としてこれを露光し、個々のJSファイルとフォルダを持っています
import actions from 'redux-auto'
...
actions.user.changeName({name:"bob"})
店/ユーザー/ changeName.js
export default function (user, payload) {
return Object.assign({},user,{ name : payload.name });
}
それがあります!
サードパーティのリデューサでreduxアクションをリスンする場合は、あなたは機能に対して緩やかな品質チェックとして使うことができます。より高度なものについては
action.type == actions.user.changeName // "USER/CHANGENAME"
あなたも、このことができます:)
- 1. ReduxアクションタイプはPROBE_UNKNOWN_ACTION
- 2. 再利用可能なコンポーネントのRedux状態を整理する方法は?
- 3. Reduxの状態:
- 4. Angular2 ReduxとAppの状態
- 5. Reduxの非同期状態の整合性を維持する
- 6. Redux Reducer - 状態
- 7. Redux - リセット状態
- 8. Reduxの:状態は
- 9. 状態ネイティブ/ Reduxエラー
- 10. React + Redux - オートコンプリート入力の状態を管理する
- 11. React/Reduxで兄弟コンポーネント間のスクロール状態を管理する
- 12. React/Reduxでローカルにコンポーネントの状態を管理する方法
- 13. Reduxで長寿命状態を処理する
- 14. reduxチェック状態をcomponentWillMount
- 15. redux、バージョンのプリロード状態?
- 16. Redux-Sagaの状態変更
- 17. Redux依存のアプリケーション状態
- 18. Reduxネスト状態のデザイン
- 19. エンティティのRedux UI状態
- 20. Reduxレデューサーオン状態の変更
- 21. Reduxのストアが状態
- 22. Redux状態の設計
- 23. Reduxサンクのアクションと共有状態
- 24. redux古い状態を接続する
- 25. 状態を購読する - Redux
- 26. reduxストアでアプリケーションの状態を整理するにはどうすればよいですか?
- 27. Reduxレデューサーの状態を返す方法
- 28. Reduxを使用した認証状態の処理
- 29. Reduxの状態とURLクエリのパラメータを同期する方法
- 30. の状態はJSXです! React/Redux
を希望アクションは、特定の減速
によって所有されている場合はproject page
の詳細を読むことができます見ることができますそれはアクションタイプのための素晴らしいアイデアです!どうもありがとうございました。 私がこの権利を取得した場合、payLoadのタイトルはストアの1つの状態になりましたか?それが正しい場合、同時に2つの異なるタイトルを表示するにはどうしますか?あなたは州でも名前のコンベンションを持っていますか? – ReidunMarie
私は減速機を含めるように例を拡張しました。うまくいけばあなたの質問に答えます。私は、異なるモジュールで同じファイル名の規約を使用すると、大規模なコードベースを保守し、異なるチームメンバーによって書かれたコードをすばやく理解できることに本当に役立つことがわかりました。 – OlliM
ああ、もちろん! combineReducersの部分を忘れていました。つまり、2つの減速機_items_と_comments_をストア内の2つの状態として、それぞれ_title_状態にします。クリアしていただきありがとうございます! – ReidunMarie