Integrieren Sie dynamische Daten in react.js

Nov 06 2020

Hallo, ich habe eine Karte erstellt, auf die ich reagieren muss, um sie dynamisch zu gestalten. Ich habe nur eine Komponente erstellt, aber ich habe mehrere Daten, damit sie mit den von ihnen gesendeten Daten multipliziert werden

function App() {
  const [open, setOpen] = useState(false);

  const trigger = useRef(null);

  useEffect(() => {
    if (trigger.current) {
      trigger.current.style.transition = "0.35s";
    }
  }, [trigger]);

  function toggleOpen() {
    if (trigger.current) {
      setOpen((open) => !open);
      if (open) {
        trigger.current.style.webkitTransform = "rotate(0deg)";
      } else {
        trigger.current.style.webkitTransform = "rotate(180deg)";
      }
    }
  }
  const [metadata, setMetadata] = useState([]);
  const data = response.json();
  setMetadata(data);

  return (
    <div className="w-full ">
      <Menu />
      <div className="w-full flex justify-center px-4 py-3">
        <div className="flex w-3/12 px-2 items-center">
          <div className="w-24 p-2 bg-gray-300 mr-4 rounded">
            <img src={logo} className="" alt="" />
          </div>
          <div className="flex flex-col justify-center ">
            <p className="font-semibold my-0">{name}</p>
            <p className="text-xs my-0">
              {address}
            </p>
          </div>
        </div>
        <div className="flex w-1/6 justify-center items-center px-2">
          <div className="w-4/5 h-10 bg-green-600 rounded text-white font-bold flex justify-center items-center">
            <p className="my-0 text-lg">{percentage}</p>
          </div>
        </div>
        <div className="flex w-1/12 justify-center">
          <Chart />
        </div>
        <div className="flex  w-1/6 justify-center items-center font-semibold">
          <p className="my-0 text-lg">{visits}</p>
        </div>
        <div className="flex justify-center items-center font-semibold w-1/6">
          <p className="my-0 text-lg">{conglomerations} Alertas</p>
        </div>
        <div className="flex justify-center items-center font-semibold w-1/6 ">
          <p className="my-0 text-lg">{occupancy} Alertas</p>
        </div>
        <div className="card flex justify-center items-center w-1/6">
          <Button className="mr-3">Analytics</Button>
          <Button>Alerts</Button>
        </div>
        <div className="w-1/12 flex justify-center items-center">
          <span
            ref={trigger}
            onClick={toggleOpen}
            className=" w-4/12 flex justify-center items-center"
          >
            <BsChevronUp className=" text-2xl" />
          </span>
        </div>
      </div>
      <Info open={open} />
    </div>
  );
}

export default App;

Hier zeige ich meinen Code der Karte, dieser muss im gesamten unteren Teil Menumit den Daten multipliziert werden, die ich habe, das wäre dies

[
{
    "name": "Samantha White",
    "id": "484567489sda",
    "address": "4116 Barton Creek Boulevard Austin, TX 78735 USA",
    "logo": "https://sssssss.s3.amazonaws.com/ssss/express.png",
    "occupancy": {
      "capacity": 150,
      "occupancy": 0,
      "percentage": 0
    },
    "alerts": {
      "conglomerations": 0,
      "occupancy": 0
    },
    "visits": 2721
  },
  {
    "name": "Jacqueline Wells",
    "id": "sdasdx45616a4dsa5",
    "address": "s15035 Highview Road Grand Junction, CO 81504 USA",
    "store_logo": "ssssss.s3.amazonaws.com/ssss/lider.png",
    "occupancy": {
      "capacity": 150,
      "occupancy": 0,
      "percentage": 0
    },
    "alerts": {
      "conglomerations": 0,
      "occupancy": 0
    },
    "visits": 2069
  }
]

Im Moment haben sie mir nur einen .text mit den gleichen Daten wie den von mir gesendeten gesendet. Wenn mir jemand helfen könnte, diese Daten in meine Karte zu integrieren und sie mit allen Daten zu multiplizieren, die sie mir senden, weiß ich nicht viel über Integration, wenn nicht mehr Layout

Antworten

1 HunterCampbell Nov 07 2020 at 02:03

Ich glaube, Sie fragen nach einer Methode, um eine Karte pro Artikel aus Ihrer JSON-Datei richtig zu erstellen? In diesem Fall würde ich empfehlen, dass Sie alles, was mit der Herstellung der Karte zu tun hat, in eine eigene Komponente aufteilen. Anschließend können Sie es wieder in Ihre App-Komponente importieren, Ihre Daten aus Ihrer JSON-Datei zuordnen und Ihre Kartenkomponente pro Iteration der Schleife erstellen. Es würde ungefähr so ​​aussehen wie das Code-Snippet unten.

function App() {
  const [open, setOpen] = useState(false);

  const trigger = useRef(null);

  useEffect(() => {
    if (trigger.current) {
      trigger.current.style.transition = "0.35s";
    }
  }, [trigger]);

  function toggleOpen() {
    if (trigger.current) {
      setOpen((open) => !open);
      if (open) {
        trigger.current.style.webkitTransform = "rotate(0deg)";
      } else {
        trigger.current.style.webkitTransform = "rotate(180deg)";
      }
    }
  }
  const [metadata, setMetadata] = useState([]);
  const data = response.json();
  setMetadata(data);

  return (
    <div className="w-full ">
      <Menu />
        {data.map(idx => (
          <Card idx={idx.props} />
        ))}
      <Info open={open} />
    </div>
  );
}

export default App;

Ich weiß, dass es keine vollständige Antwort ist, aber hoffentlich werden Sie dadurch in die richtige Richtung gelenkt. Außerdem sollten Sie sich über die Kartenmethode (nicht zu verwechseln mit der Kartenmethode) und das Aufheben des Status informieren. Ich werde unten auf die Dokumente verlinken ...

Karte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Hubzustand: https://reactjs.org/docs/lifting-state-up.html