我该怎么做才能通过模态传递变量?

How can I do to pass variable throught the modals?

我正在将 React.js 与传单一起使用,但我不知道如何在我点击模态饮食时传递变量以获取。我的意思是这就是我所拥有的

当我点击打开模式时,我得到了:

我想当我点击上面的打开模式时,我得到了饮料,而另一个吃而不是 lorem ipsum ...

这是地图的代码:

import React from "react";
import { Map, TileLayer, Marker, Popup } from "react-leaflet";
import { defaultMarker } from "./defaultMarker";
import "./Map.css";

const center = [51.505, -0.09];

const data = [
  { title: "eat", coord: [50, -0.09] },
  { title: "drink", coord: [52, -0.5] }
];

const MapComp = ({ onOpen }) => {
  return (
    <Map style={{ height: "100vh" }} center={center} zoom={5}>
      <TileLayer
        url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
      />
      {data.map((todo) => (
        <Marker position={todo.coord} icon={defaultMarker}>
          <Popup className="request-popup">
            <button onClick={onOpen}>Open Modal</button>
          </Popup>
        </Marker>
      ))}
    </Map>
  );
};

export default MapComp;

还有模态代码:

import React from "react";
// import { Button, Modal } from "react-bootstrap";
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap";

export default function CustomModal({ show, onClose }) {
  return (
    <div>
      <Modal isOpen={show} toggle={onClose}>
        <ModalHeader onClose={onClose}>Modal title</ModalHeader>
        <ModalBody>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
          eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
          minim veniam, quis nostrud exercitation ullamco laboris nisi ut
          aliquip ex ea commodo consequat. Duis aute irure dolor in
          reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
          pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
          culpa qui officia deserunt mollit anim id est laborum.
        </ModalBody>
        <ModalFooter>
          <Button color="primary" onClick={onClose}>
            Do Something
          </Button>{" "}
          <Button color="secondary" onClick={onClose}>
            Cancel
          </Button>
        </ModalFooter>
      </Modal>
    </div>
  );
}

你也可以在这里找到我的代码:

My code

我该怎么做?

非常感谢!

您可能需要添加一些状态管理,这样您就可以添加“全局范围”在组件之间共享信息,可能性:

  • Redux:如果您有复杂数据,请使用它。
  • React Context:可能你会需要走这条路,只要你需要一点状态管理。

传递变量的示例代码。

在您的应用中

export default function App() {
  const [show, setShow] = useState(false);
  const [ variableToModel, setVariableToModel] = useState('')

  const handleClose = () => setShow(false);
  const handleOpen = (variable) => {
        setShow(true);
        setVariableToModel(variable)
  }

  return (
    <>
      <MapComp onOpen={handleOpen} />
      <Modal show={show} onClose={handleClose} myProp={variabletoModel} />
    </>
  );
}

在你的地图中

 <button onClick={() => onOpen('SHOW ME IN THE MODAL'}>Open Modal</button>