intégrer des données dynamiques dans react.js
bonjour j'ai une carte créée en réaction sur laquelle je dois la rendre dynamique, je n'ai créé qu'un seul composant, mais j'ai plusieurs données pour qu'elle se multiplie avec les données qu'ils envoient
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;
Ici, je montre mon code de la carte, cela doit être multiplié toute la partie inférieure de Menuavec les données que j'ai qui seraient ceci
[
{
"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
}
]
Pour l'instant ils ne m'ont envoyé qu'un .text avec des données identiques à celles que j'ai mises, si quelqu'un pouvait m'aider à intégrer ces données à ma carte et à les multiplier avec toutes les données qu'ils m'envoient, je ne sais pas grand-chose sur l'intégration sinon plus de mise en page
Réponses
Je pense que vous demandez une méthode pour créer une carte par élément à partir de votre fichier JSON, n'est-ce pas? Si c'est le cas, je vous recommanderais de prendre tout ce qui concerne la fabrication de la carte et de la séparer en son propre composant. Ensuite, vous pouvez le réimporter dans votre composant d'application, mapper vos données à partir de votre fichier JSON et créer votre composant de carte par itération de la boucle. Cela ressemblerait à l'extrait de code ci-dessous.
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;
Je sais que ce n'est pas une réponse complète, mais j'espère que cela vous mènera dans la bonne direction. En outre, vous devriez lire la méthode de la carte (à ne pas confondre avec la méthode de la carte) et comment soulever l'état. Je vais créer un lien vers les documents ci-dessous ...
carte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
état de levage: https://reactjs.org/docs/lifting-state-up.html