Javascript 在模式中响应路由器刷新
我试图用url打开一个模式,但刷新后页面url保持正确,但模式无法打开。Javascript 在模式中响应路由器刷新,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我试图用url打开一个模式,但刷新后页面url保持正确,但模式无法打开。 下面是代码示例,但在我的项目中,模式不是绝对打开的,但是位置状态:true是正确的。它在devtools中也是未定义的 像这样使用本地存储: 创建状态变量以保持模态状态 this.state = { isModalOpen: false }; 在链接上,更改局部变量并将模态状态保存到本地存储器 <Link className="frontpage-job" to={"/m
下面是代码示例,但在我的项目中,模式不是绝对打开的,但是位置状态:true是正确的。它在devtools中也是未定义的 像这样使用本地存储: 创建状态变量以保持模态状态
this.state = { isModalOpen: false };
在链接上,更改局部变量并将模态状态保存到本地存储器
<Link
className="frontpage-job"
to={"/modal/1"}
onClick={() => {
localStorage.setItem("isModalOpen", JSON.stringify(true));
this.setState({ isModalOpen: true });
}}
>
modal
</Link>
最后但并非最不重要的一点是创建一个closeModal方法来关闭模式、清理url并重置本地存储值
closeModal = () => {
localStorage.setItem("isModalOpen", JSON.stringify(false));
this.setState({ isModalOpen: false });
this.props.history.push("/");
};
将其作为道具传递给模态实例
<Modal isModal={isModalOpen} closeModal={this.closeModal} />
现在,如果已打开模式并刷新,则模式将保持打开状态。如果关闭并刷新它,它将关闭
如果刷新,页面状态将丢失。它是未定义的。刷新时无法保留它。只有当您将其存储到本地存储或类似存储时,它才能被保留。但在inspect im loging'location'中刷新后,内部状态为true,这怎么会发生?嗯,当您刷新页面时,您不想使用componentDidMount吗?另一个注意事项是,您不应该使用componentWillUpdate,请参阅react文档以了解首选方法:我尝试将数据保存在localstorage中,但刷新后该值也丢失了。如何节约?
<Modal isModal={isModalOpen} closeModal={this.closeModal} />