2016-11-26 24 views
0

项目(TodoList的)与immutable库中创建,source here组件及其后无法卸载删除店

存储结构:project有很多tasks,在终极版店:State - 地图,projects, tasks - 记录

当我异步删除项目...

export const removeProject = project => (dispatch) => { 
    if (!isProjectExist(project)) return Promise.resolve() 
    return projectService 
    .delete(project) 
    .then(
    () => { 
     dispatch(remove(project)) 
     console.log("post removeProject resolved") 
     }, 
     handleError, 
    ) 
} 

....这是在初始化后创建的 - 它将被删除并正确卸载,但是当项目被作为initialState通过 - ProjectList不会被重新描绘,并ProjectItem尝试呈现自己与陈旧的数据,和失败,因为在画面enter image description here


It have tests


它看起来像减速器returs改变了数据,但我使用immutablejs,以前我使用normalizr-immutable,但我认为这个库中的问题的来源,并写我自己的normalizeInitialStatesource),它没有帮助,现在我想临屋区的T问题redux-immutable


也许源我挣扎着这个问题的解决


creator of redux says

整整一天,我不认为这是我们可以解决。 React状态更改为 异步,React可能(或可能不)批处理它们。因此,当你按下“删除”,Redux商店更新时,以及 应用程序都会收到新的状态。即使应用程序状态更改导致 项目的卸载,那将比mapStateToProps发生的更早的是 项目。

除非我错了,否则我们无能为力。你有两种选择:

请求所有需要的状态在应用程序(或更低,例如ItemList)水平 并将其传递给“哑”项目。为“当前未安装”状态添加保护措施,以将mapStateToProps 添加进去。例如,在这种情况下,您可以从渲染返回空值 。如果mapStateToProps 返回null,我们可能会让connect()生成的组件 返回null。这有意义吗?这太令人吃惊了吗?

嗯,我从来没有见过在mapStateToProps像return (<div></div>)存根或保障他人的代码

回答

0

markerikson

我不能完全肯定我完全地按照你的问题是什么,但作为一个 猜测:这听起来像子组件在父亲 之前重新呈现。这是React-Redux v4及更早版本中的一个已知问题。 v5测试版修复了此问题。尝试安装react-redux @下一步,看看是否需要照顾您的问题 。