2017-07-14 22 views
1

在使用終極版(具有NGRX店內)的角4的應用程序,我有以下:Angular4 + Redux:誰應該派遣行動?

調用一個服務

this.contentService.update(this.content).subscribe(data => { 
    //output some success message 
}); 

調用的API的服務的智能組件,然後分派動作

update(content: Content) { 
    return this.http.put(`http://someendpoint/contents.json`, { content }) 
    .map((updated_content: Content) => { 
    this.store.dispatch({ type: 'SOME_KEY', payload: updated_content } ); 
    return updated_content; 
    }); 
} 

這種方法工作得很好,沒問題。但是我不知道這是否是正確的方法:讓組件處理API的響應並將該操作發送到商店會更好嗎?我應該分開這個嗎?優缺點都有什麼?我找不到一篇關於此的好文章。

回答

2

我個人想將任何邏輯從數據/休息服務中分離出來。

基本上你有很多很多方法來處理這個問題 - 在一個大的應用程序中,我甚至不會直接從組件內部調用服務,而只能通過調度操作通過@Effect

沒有「一個真正的」方式,這一切都取決於建築/風格可以定義 - 只要確保你保持一致,並沒有引入與每個組件/服務的新途徑。

+0

感謝您的評論!我想我會遵循這種方法將邏輯從我的服務中分離出來,也許使用效果(應用程序開始非常「小」,所以我不認爲使用它會有很多好處,但現在它正在增長,也許是時候使用了他們)。 :-) –

+1

我同意,效果是調用服務的地方。 –

+0

正如我所說:有_no通用真正的解決方案_ - 重構總是涉及風險,並且通常需要相當多的努力 - 如果您是唯一開發應用程序的開發人員,並且如果它低於50個文件,我個人不會投資時間並保持原樣 - 使用@ Effect可能會發現其他可能會讓你煩惱的事情,它會令人神奇地變得更好;-)(儘管它可能更乾淨,但肯定會有更多工作) – olsn