预处理Redux状态(业务逻辑的位置)

时间:2016-08-24 15:33:46

标签: redux state

我在react中创建了一个应用程序,其目的是查找航班并在结果窗口中显示它们。通过侧栏中的过滤器设置,您可以过滤这些结果。目前我正在将react应用程序转换为Redux。

我的商店中有以下状态:

const defaultState = {
    flightOffers,
    filteredFlightOffers,
    filters
    }

其中flightOffers是一个包含flightresults的对象数组:

flightOffers  = [{
    "inboundFlight": {
        "departureDate": "2016-06-02",
        "departureTime": "09:00",
        "departureTimeSpan": "morning",
        "arrivalDate": "2016-06-02",
        "arrivalTime": "12:32",
        "arrivalTimeSpan": "afternoon",
        "marketingAirline": {
            "companyShortName": "KL",
            "name": KLM,
            "imageurl": "images/logos/kl.png"
        },
        "flightNumber": 5131,
        "departureAirport": {
            "locationCode": "BCN",
            "name": "Barcelona"
        },
        "arrivalAirport": {
            "locationCode": "AMS",
            "name": "Amsterdam"
        }},
];

filteredFlightOffers的状态是相同的,但是是flightOffers状态对象的子集。

过滤器状态对象具有以下格式:

filters = [{
        "type": "airlines",
        "checked": true,
        "label": "Air France",
        "count": 579
    },
    {
        "type": "airlines",
        "checked": true,
        "label": "Brittish Airways",
        "count": 554
    },
    {
        "type": "airlines",
        "checked": true,
        "label": "CityJet",
        "count": 576
    }
];
  • 通过API调用检索flightOffers状态对象。
  • 应根据过滤器状态对象中所有已检查/未检查的项目创建filteredFlightOffers状态对象,并应在每次更改过滤器时重新创建。
  • 每次单击某个项时,filter stateobject将具有更改的选中值,但每次重新创建新的filteredFlightOffers状态对象时,还会更新所有元素的计数项。

现在我有以下问题:

  1. 我的过滤器状态对象是从flightOffers状态对象派生的,当来自flightOffers的数据被API调用后移时,应该动态创建。在redux模式中哪里是实现这种逻辑的好地方?

  2. 我有一个针对我的flightOffers状态和我的设置状态的调度程序。单击过滤器设置时,操作将转到过滤器调度程序并返回新的过滤器状态。但是如何根据flightOffer状态计算所有新的过滤器计数?例如我是否需要触发FlightOfferCounter操作并将过滤器状态作为输入参数?如果是这样,我可以从我的过滤器减速器发出这个电话吗?或者我是否必须创建一个FlightOfferCounter减速器来监听与过滤器减速器相同的动作?那么问题是这些减速器不能并行执行,因为flightOfferCounter基于过滤器状态中的检查值。

  3. 我正在阅读有关redux thunk(用于实现业务逻辑)的内容。这是我需要的东西吗?

    希望我的问题有点清楚。

0 个答案:

没有答案