このシナリオのベストプラクティスを見つけようとしますが、見つけられません。ngrx/reduxアクションコンテキストのベストプラクティス
問題: 私は私の例では 家庭todos.actionsとスポーツドス・アクションのように、私は同じに-dos.actionファイルを使用したい、アクションファイルを繰り返したくはありません。同じ還元剤。
例:私は例えばTODOアプリケーションを作成 が、私はそれが家(効果や減速)に派遣するタイプ「ADD_TODO_ASYNC」でアクションをディスパッチすると、この例では、あなたが問題を見ることができる、とスポーツ(効果そして、減速)
todos.actions.ts
const ADD_TODO_ASYNC = 'ADD TODO ASYNC';
const ADD_TODO_COMPLETE = 'ADD TODO COMPLETE';
const ADD_TODO_FAILD = 'AD TODO FAILD';
class addTodoComplete {
type = ADD_TODO_COMPLETE;
}
class addTodoFaild {
type = ADD_TODO_COMPLETE;
}
export type Actions = addTodoComplete | addTodoFaild;
sport.effects.ts
@Injectable()
export class SportTodosService {
@Effect() ADD_TODO_ASYNC$ = this.actions$.ofType(TodosActionTypes.ADD_TODO_ASYNC)
.map(toPayload)
.swithMap((todo: Todo) => this.api.addTodo(todo))
.map((todo: Todo) => TodosActionTypes.addTodoComplete(todo))
constructor(
private actions$: Actions,
private api: api
) { }
}
home.effects.ts
export class HomeTodosService {
@Effect() ADD_TODO_ASYNC$ = this.actions$.ofType(TodosActionTypes.ADD_TODO_ASYNC)
...
constructor(
...
) { }
}
減速
function todosReducer(state, action: TodosActionTypes.Actions) {
switch (action.type) {
case TodosActionTypes.ADD_TODO_COMPLETE:
return state;
default:
return state;
}
}
app.module.ts
@NgModule({
declarations: [
AppComponent
],
imports: [
StoreModule.forRoot({
sport: todosReducer,
home: todosReducer,
}),
EffectsModule.forRoot([
SportTodosService
HomeTodosService,
])
],
providers: [
api
],
bootstrap: [AppComponent]
})
export class AppModule { }
私はこのシナリオのためのベストプラクティスであるかを理解しようと? 「HOME_ADD_TODO」のようなコンテキストでアクションを書き込む&「SPORT_ADD_TODO」?
または正式な方法がありますか?あなたが解決策を知っていれば
、解決策はReduxのためであれば気にしたり
感謝にそれらのケース内のすべての
私は名前の間隔を知っていますが、私は私のアプリで私はtodosの10科目を持っている場合、私は過去の同じ行動をコピーしますか? あなたのソリューションでは、どのように私は1つの減速機でそれを処理するのですか? – Alin
私はあなたが私の問題を理解していないと思う!あなたの方法で私は減速器とアクションを2回書く必要があるので – Alin