【问题标题】:react router link not shown反应路由器链接未显示
【发布时间】:2020-11-24 12:56:59
【问题描述】:

我想在我的应用程序中添加一个反应路由器链接到模态。当我单击模式时,ID 不会立即显示在 url 中。只有在我关闭模式后,模式 ID 才会显示在 url 中。此外,当我在打开模式的情况下重新加载页面时,我希望模式仍处于打开状态,但如果我刷新页面但模式 id 仍在 url 中,则模式关闭,因此看起来不太好。任何帮助将不胜感激。

import React, { useState } from "react";
import Modal from "react-modal";
import { Link, BrowserRouter as Router } from "react-router-dom";
const customStyles = {
  content: {
    top: "50%",
    left: "50%",
    right: "auto",
    bottom: "auto",
    marginRight: "-50%",
    transform: "translate(-50%, -50%)"
  }
};

Modal.setAppElement("#root");
const ListItem = ({ photo }) => {
  console.log(photo.links.download_location);
  const downloadImage = () => {};
  const [modalIsOpen, setModalIsOpen] = useState(false);

  return (
    <>
      <Router>
        <div key={photo.id} className="grid__item card">
          <div className="card__body">
            <img
              src={photo.urls.small}
              alt=""
              onClick={() => setModalIsOpen(true)}
            />
          </div>
        </div>
        <Link to={`/${photo.id}`}>
          <Modal
            isOpen={modalIsOpen}
            onRequestClose={() => setModalIsOpen(false)}
            style={customStyles}
          >
            <img src={photo.urls.small} alt="" />
            <div>
              <button onClick={() => setModalIsOpen(false)} className="button">
                Close
              </button>
              <button onClick={downloadImage()}>Download</button>
            </div>
          </Modal>
        </Link>
      </Router>
    </>
  );
};
export default ListItem;

【问题讨论】:

标签: javascript reactjs react-router


【解决方案1】:

为了在刷新页面后显示模态,您需要将您的 isModalOpen 状态保存在浏览器本地存储中。

【讨论】:

【解决方案2】:

您需要使用 Link 组件包装每个图像。然后创建 Route 来渲染 Modal。

【讨论】:

  • 哇这个解决方案最接近我想要的结果。但是有一个问题,当我在打开模式的情况下刷新时,会出现错误。如何摆脱该错误?它说photo is undefined
  • 您必须使用上下文或根据模态包装器中 URL 中提供的 id 重新获取照片才能获得所需的结果。
  • 目前,photo 可通过位置的 state 属性获得。 reactrouter.com/web/api/Link/to-object
  • 有可能,但您不应该使用位置状态来获取点击的照片。您需要做的是根据Modal中给定的id重新获取照片。
  • 查看 Link 组件的 to 属性。
猜你喜欢
  • 2019-01-07
  • 1970-01-01
  • 2018-04-15
  • 2018-01-03
  • 2013-02-12
  • 2020-05-06
  • 2021-10-09
  • 2018-09-22
  • 1970-01-01
相关资源
最近更新 更多