reactjs - 如何在浏览器后退按钮上保存反应状态?
问题描述
我有 3 个组件/页面Home、page1、page2,我正在从 home 发送道具并调用 page1
<Link
style={{ textDecoration: "none", color: "inherit" }}
to={{
pathname: "/page1",
Props: { categoryID: val.id, categoryName: val.name }
}}
/>;
然后第 1 页在构造函数中获取这些道具并定义状态
class BuyerItems extends Component{
constructor(props) {
super(props);
this.state = {
id: props.location.aboutProps.categoryID,
name: props.location.aboutProps.categoryName,
gigs:[],
}
this.getGigs();
}
现在从这里开始,如果我通过链接转到page2,然后按浏览器后退按钮,则会出现以下错误
TypeError:无法读取未定义的属性“categoryID”
解决方案
您唯一的问题是您需要按照@Manu 的建议在状态对象中传递道具,而不是像您现在所做的那样作为随机属性名称。我在这里为你做了一个回购。正如您所看到的,在反应路由器的状态对象中传递的属性在按下沙箱窗口中的后退按钮后仍然存在,但我作为道具放置的属性不是。
推荐阅读
- swift - 单击 Swift 中的底部标签栏时更改图标边框
- .net - 使用 .net sdk 的新 Azure 监视器警报
- javascript - ASP.NET MVC 在 jQuery 数据表中使用带有按钮 onclick 的模态弹出窗口
- python - 访问动态变量以执行操作
- kotlin - 导航抽屉片段和标签布局片段重叠
- r - Databricks Spark 集群 MLlib 线性回归与本地笔记本电脑上的 Spark MLlib 性能相同吗?
- python - Scipy LPF ValueError:无法将 b、a 和 x 转换为通用类型
- laravel - 未定义的变量 $statistic_teachers
- python - 如何在 keras 中获得可重现的 NN 结果
- android - 将视图宽度动画到 X 位置