【发布时间】:2019-03-15 13:23:05
【问题描述】:
我正在使用打字稿处理基于 React 的应用程序中的表。我正在为表实现搜索功能。表格内可以显示大量数据,所以我在后端执行搜索、排序、分页。
我有一个表格组件,它从父组件接收数据作为道具。我正在使用 redux 的反应并使用 sagas,我从后端获取数据。我正在使用 redux 状态向组件提供数据。我正在使用减速器来改变状态。
我面临的问题是,当我重新加载数据时,我获取了数据并使用 reducer 我改变了状态,但它没有显示在前端。但是当我第二次尝试时,它会显示数据。
我的减速器代码如下。
const dataEnteries: Reducer<any> = (
state = {},
{ type, detail, pagination }: DataResponse
) => {
switch (type) {
case actionTypes.DATA_LOAD_RESPONSE:
if (!detail) {
return {};
}
const data: any[] = [];
const tableData: any[] = [];
detail.forEach((o) => {
tableData.push(o.dataDetail);
Data.push(o)
})
const resultMap = new Map()
resultMap["data"] = data;
resultMap["tableData"] = tableData;
resultMap["pagination"] = pagination;
return resultMap;
default:
return state;
}
};
这是我到道具功能的地图状态
const mapStateToProps = ({ data }: { data: DataState }): DataProps => ({
data: data.dataEnteries
});
dataEnteries 是最里面的属性
我无法弄清楚我的情况出了什么问题,因为第二次,事情正常。
【问题讨论】:
-
你的商店是什么形状的?如果 auditEnteries 是您的根减速器,那么商店中不会有 dataEnteries 属性
标签: reactjs typescript redux