Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在模式中响应路由器刷新_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 在模式中响应路由器刷新

Javascript 在模式中响应路由器刷新,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我试图用url打开一个模式,但刷新后页面url保持正确,但模式无法打开。 下面是代码示例,但在我的项目中,模式不是绝对打开的,但是位置状态:true是正确的。它在devtools中也是未定义的 像这样使用本地存储: 创建状态变量以保持模态状态 this.state = { isModalOpen: false }; 在链接上,更改局部变量并将模态状态保存到本地存储器 <Link className="frontpage-job" to={"/m

我试图用url打开一个模式,但刷新后页面url保持正确,但模式无法打开。
下面是代码示例,但在我的项目中,模式不是绝对打开的,但是位置状态: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} />