2017-08-22 68 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