2016-04-29 71 views

回答

3

是的。 這完全沒問題。

如果你的商店寫得很好,它幾乎只是返回它以前的值的副本。

這就是說,發射絕對沒有的事件是沒用的。

Redux教程建議分隔動作,動作創建者和人們用動作調用動作創建者的原因恰恰是,您可以決定發送到商店的內容;沒有「點擊這裏獲得50/50的機會我們要更新商店」,因爲它不再是功能方法的一部分。

+0

哇,好吧!所以我不必派遣它!太好了! – AndrewMcLagan

+0

Redux旨在存儲狀態,管理狀態並根據狀態更改更新視圖。如果沒有狀態發生變化,並且頁面關心結果,並且用戶不關心根據結果看到新的視圖,那麼顯然沒有理由分發它。 – Norguard

0

它是什麼迴應呢?操作實際上只是設置Redux狀態,如果你不需要設置狀態,你爲什麼要調用一個操作?在這種情況下,只需執行您需要直接在組件中執行的任何操作即可。

+0

是我的想法。雖然我指的是API調用到我的應用程序服務器。 (AJAX)。 – AndrewMcLagan

+0

問題是你在做什麼迴應?保存到狀態?表演一些東西,然後扔掉結果?它必須是一個或另一個。如果是前者,則將其保存爲Redux狀態,如果是後者,則將其用於組件中並將其丟棄。 – ha404

+0

其後.. – AndrewMcLagan

1

我會說「是的,沒關係」 - 儘管這是我的看法。

它使您可以進一步擴展您的應用程序。例如,你可以有這樣的:

export function fetch(sysId:string) { 
    return function(dispatch:Function) { 
     dispatch(fetching()); 

     $.ajax(...) 
      .fail(e => dispatch(failed())) 
      .done(data => dispatch(fetched(data))); 
    } 
} 

export function failed() { 
    return { type: 'SERVER/FAILED' }; 
} 

export function fetching() { 
    return { type: 'SERVER/FETCHING' }; 
} 

export function fetched(data:Object) { 
    return { type: 'SERVER/FETCHED', data }; 
} 

目前,您可以有零用心去做,在你減速的failedfetching行動東西。

然後你意識到你需要一個動畫加載器來顯示。容易,因爲你有這些行動。顯然有不是添加任何你不需要的參數,但我認爲對於這樣的普通片斷,它的開銷很小。

+0

準確地說我的意見!很高興聽到其他人同意 – AndrewMcLagan

+0

我知道你的意思。我認爲/證明它是正確的,因爲該行爲正在影響您的應用程序的狀態,即使您的減速器不響應它 – Chris