单击浏览器后退按钮时,React显示相同的项目列表

时间:2018-09-04 14:22:33

标签: javascript reactjs render

我有2个反应成分。第一个组件是项目列表。第二个组件是表示项目的组件。

第一个组件以componentDidMount生命周期方法从服务器获取数据。首次访问此页面时,将显示20个项目。该页面上还有一个“ 显示更多”按钮。当用户单击该按钮时,还将获取20多个数据。

让我们承认用户单击了该按钮。现在显示了40个项目。

用户可以单击一个项目,然后重定向到包含该项目详细信息的另一个页面。

我的问题是,当用户单击后退浏览器按钮(返回项目列表)时,该组件重新渲染并仅显示20个项目。 以前的状态(包含40个项目)丢失了。

我想要的是,如果当前状态有40个项目,并且用户单击其中一个(以查看详细信息页面),当他返回时(通过浏览器导航),请始终向他显示相同的列表在他进入细节页面之前。

换句话说,从详细信息页面到列表页面的导航不得重新呈现列表页面。

我希望我的解释很清楚。

谢谢。

1 个答案:

答案 0 :(得分:2)

问题是当您访问第二个组件时,第一个被卸载。 您有多种选择:  -使用Redux之类的商店保留数据  -在不卸载前一个组件的情况下显示第二个组件(即:模态)  -将组件状态存储在较高状态(提起状态,可解决90%的反应模式问题)  -将结果存储在本地存储中  -将已加载的商品数量存储在某处,以防止显示过时的数据

您打算实现它的方式实际上取决于数据持久性/ ux接受标准,但是您有很多选择。