gpt4 book ai didi

javascript - 页面加载时的多个异步调度会出现错误?

转载 作者:行者123 更新时间:2023-12-02 23:58:36 26 4
gpt4 key购买 nike

在我的主页中,我有几个需要从异步操作返回数据的小部件。在每个组件中,我都按如下方式分派(dispatch)操作:

componentDidMount() {
this.props.dispatch(homepageActions.getUpcomingTrips());
}

当我以相同的方式连接第二个小部件时,我收到 TypeError: data.upcoming_hikes is undefined 错误。检查我的状态后,我的数据似乎被“覆盖”,因为这些数据都是同时调用的。

查看 Redux 开发工具,我可以按顺序看到 HOMEPAGE_CURRENT_PACK_REQUEST、HOMEPAGE_UPCOMING_TRIPS_REQUEST、HOMEPAGE_UPCOMING_TRIPS_SUCCESS 和 HOMEPAGE_CURRENT_PACK_REQUEST。我的数据如下所示:

HOMEPAGE_UPCOMING_TRIPS_SUCCESS: enter image description here

HOMEPAGE_CURRENT_PACK_SUCCESS: enter image description here

在我看来,数据对象正在被覆盖?

我的reducer是这样写的:

import { homepageConstants } from '../_constants';

const initialState = {
data: {},
loading: true,
error: null,
}

export function homepage(state = initialState, action) {
console.log('action: ', action);

// current pack widget reducer
switch (action.type) {
case homepageConstants.CURRENT_PACK_REQUEST:
return {
...state,
data : {},
loading: true,
};
case homepageConstants.CURRENT_PACK_SUCCESS:
return {
...state,
data : action.data,
loading: false,
};
case homepageConstants.CURRENT_PACK_FAILURE:
return {
...state,
error: action.error,
};

// total miles widget reducer
case homepageConstants.TOTAL_MILES_REQUEST:
return {
...state,
data : {},
loading: true,
};
case homepageConstants.TOTAL_MILES_SUCCESS:
return {
...state,
data : action.data,
loading: false,
};
case homepageConstants.TOTAL_MILES_FAILURE:
return {
...state,
error: action.error,
};

// upcoming trips widget reducer
case homepageConstants.UPCOMING_TRIPS_REQUEST:
return {
...state,
data: {},
loading: true,
};
case homepageConstants.UPCOMING_TRIPS_SUCCESS:
return {
...state,
data: action.data,
loading: false,
};
case homepageConstants.UPCOMING_TRIPS_FAILURE:
return {
...state,
error: action.error,
};

default:
return state;
}
}

如果我的猜测是正确的,数据被覆盖(因为这是每个 reducer 案例中该键的名称,我应该如何处理这个问题?是否有更好的方法来处理页面加载时的多个调度?

最佳答案

您有两个选择。

  1. 传播action.data。在这种方法中,您必须修改访问元素的方式。
{
...state,
...action.data,
}
  • 传播dataaction.data并存储在data中。
  • {
    ...state,
    data: {
    ...state.data,
    ...action.data,
    },
    }

    这两个都可以解决您的问题,

    关于javascript - 页面加载时的多个异步调度会出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272728/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com