Permalänk

React, kalla på objekt?

Tjena gänget! Sitter med en applikation där jag håller på att skapa en Webshop. Just nu håller jag på med produktbeskrivning.
Jag vill kalla på objekten som jag har lagt in, men sitter fast när det handlar om att skriva ut produktens namn.
Objekten ser ut såhär:

const products = [ { id: 1, rating: 5, reviews: [], price: 1200, countInStock: 4, name: "ZEBRONICS Zeb-Yoga 101 Bluetooth Headset (Red, In Ear)", category: "KATEGORI", image: "BILDADDRESS", description: " INFORMATION OM PRODUKTEN TAR BORT FÖR TYDLIGHET", }, Så fortsätter det med några fler

Såhär ser produktbeskrivningssidan ut, jag vill att det ska matcha med id, får fram det med useParams efter lite googling, vet inte vad metoden gör egentligen. Dock får jag inte fram namnet här, tror jag hämtar det på fel sätt.

import React from "react"; import { useParams } from "react-router-dom"; import products from "../products"; export default function Productdescscreen() { const params = useParams(); const name = products.find((name) => name.id === params.id); return ( <div> <h1>Product description</h1> <h1>Product id: {params.id}</h1> <h1>Product name: {name.name}</h1> </div> ); }

Jag såg en annan lösning efter googling men den fungera inte utan useParams rekomenderades istället. Men den såg ut såhär om det kanske kan hjälpa än mer(NOTERA ATT KODEN OVANFÖR ÄR DEN JAG ANVÄNDER)

import React from "react"; import { useParams } from "react-router-dom"; import products from "../products"; export default function Productdescscreen({match}) { const productid= match.params.id; const product= products.find((product) => product.id === productid); return ( <div> <h1>Product description</h1> <h1>Product id: {productid}</h1> <h1>Product name: {product.name}</h1> </div> ); }

Några tips på hur jag kan få fram objekt namnen?

Permalänk
Medlem

Lite svårt att säga när man inte ser helheten.
En sak kan vara hur du gjort routingen för att komma till den här komponenten.
Här är en länk som förklarar mer om routing:
https://stackoverflow.com/questions/60998386/using-the-usepar...

Det kan vara så att id inte kommer med riktigt som parameter från routingen.

Tankevurpa
Visa signatur

Herman

Permalänk
Skrivet av sworst:

Lite svårt att säga när man inte ser helheten.
En sak kan vara hur du gjort routingen för att komma till den här komponenten.
Här är en länk som förklarar mer om routing:
https://stackoverflow.com/questions/60998386/using-the-usepar...

Det kan vara så att id inte kommer med riktigt som parameter från routingen.

Tack för svar. Ska kolla in länken, såhär ser min route ut:

<Router> <Routes> <Route exact path="/" element={<Homescreen />} /> <Route path="/product/:id" element={<Productdescscreen />} /> </Routes> </Router>

Permalänk
Medlem

Det du får ut från useParams är strängar. Så testa följande:

const product= products.find((product) => product.id === parseInt(productid, 10));

Permalänk
Skrivet av cfj:

Det du får ut från useParams är strängar. Så testa följande:

const product= products.find((product) => product.id === parseInt(productid, 10));

Jahaa, men åh! Detta fungerade ju utmärkt, TUSEN TACK. Suttit fast hela gårkvällen och idag, testat alla möjliga olika lösningar men nu satt den

Permalänk
Skrivet av PapaDiouf:

Jahaa, men åh! Detta fungerade ju utmärkt, TUSEN TACK. Suttit fast hela gårkvällen och idag, testat alla möjliga olika lösningar men nu satt den

Med risk för att låta dum här nu men vad står 10an för i slutet?

Permalänk
Medlem
Skrivet av PapaDiouf:

Med risk för att låta dum här nu men vad står 10an för i slutet?

Jag rekommenderar att läsa dokumentationen.

Kort sagt talar den om med vilken bas strängen ska konverteras, där 10 betyder att det decimala talsystemet ska användas.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W