我正在基于与redux反应的PWA。我正在从使用symfony的REST-API构建中获取数据。 我注意到,如果我从API更新项目,则商店中的值会发生更改(已通过dev-tools检查),但该组件未重新呈现。我只是显示旧数据,直到刷新(存储是持久性的)。
如果我更改诸如“ isFetching”之类的一级变量,这似乎是可行的,我可以正确显示加载屏幕,并在获取完成后显示数据。但是,如果我更改了诸如“ item.title”之类的嵌套变量,它将无法正常工作。 我似乎对API没问题,这正是我注意到的地方。因此,我进行了以下测试,该测试应在更改标题时更改描述(仅查看是否发生了任何事情)。
我尝试的最后一件事是像这样构建减速器:https://redux.js.org/recipes/structuring-reducers/immutable-update-patterns#updating-nested-objects –但它仍然无法正常工作。我想念什么?
以下是我的更改操作的示例,对isDirty的更改会呈现,而对项目的更改不会呈现:
动作
export function changeProject(item) {
return {
type: CHANGE_PROJECT,
meta: {
id: item.id,
},
data: {
item,
}
}
}
减速器
export default function projectById(state = {}, action) {
if (action.type === CHANGE_PROJECT) {
return {
...state,
[action.meta.id]: {
...state[action.meta.id],
isDirty: true,
item: {
...state[action.meta.id].item,
...action.data.item,
description1: action.data.item.title,
},
}
};
}
return state;
}
mapStateToProps
function mapStateToProps(state, ownProps) {
const { projectById } = state
const { isDirty, item } = projectById[
ownProps.match.params.id
] || {
item: {},
}
return {
item,
isDirty,
};
}