2017-08-22 137 views
0

說有2個日期選擇器對象對應於開始日期和結束日期。REDUX鏈接異步操作與REDX thunk

這些作爲狀態存在,所以爲了設置它們,你必須調用setStartDate或setEndDate,然後reducer拿起並設置狀態。假設我還有一個異步操作,名爲getHugeListFromServer((REQUEST,SUCCESS,FAILURE)),並用參數getHugeListFromServer(startDate,endDate)調用。

每次用戶選擇一個日期,我想調用getHugeList函數並更新列表。如果我這樣做,它不起作用,因爲在由reducer設置日期變量之前調用了後端操作。

example_container.jsx

class example extends React.Component { 
... Methods 
    onChangeStartDate (startDate) { 
    this.props.setStartDate(startDate); 
    this.props.getHugeListFromServer(startDate, this.props.example.endDate); 
    } 
    // similar method for endDate. 
} 

我已經安裝了終極版的thunk,它仍然沒有幫助我的問題。我想讓setDate動作的reducer在調用後端動作之前返回一個承諾並在容器中解析它,但我敢打賭有一個更好的方法可以解決這個問題。

有人可以舉手嗎?謝謝!

+0

內,您的** ** getHugeListFromServer功能,您可以撥打** ** setStartDate並執行默認功能。 – Hosar

+0

儘管如此,它並不真正與getHugeListFromServer的名稱相匹配。 – smbl

回答

0

我曾想過讓setDate操作的reducer在調用後端動作之前返回一個承諾並在容器中解析它,但我敢打賭還有更好的方法來解決這個問題。

我不認爲這聽起來不合理。事實上,對於redux,這可能是完全正確的,可能是首選。

但是,如果您願意,您可以查看組件的一些生命週期方法,例如componentWillUpdate() - 每次您的狀態即將更新時,都會調用它。所以你可以保留你的處理程序,但只需從中刪除this.props.getHugeListFromServer(...)並將其放入componentWillUpdate()鉤子中 - 請查看以下文檔鏈接以查看如何實現它的示例。

https://developmentarc.gitbooks.io/react-indepth/content/life_cycle/update/tapping_into_componentwillupdate.html

+0

然後真正的復原 - thunk的目的是什麼?是不是應該爲我解決所有這些異步縮減問題? – smbl