【发布时间】:2021-06-18 10:27:06
【问题描述】:
所以我正在尝试制作一个 Web 应用程序,它从后端 API 获取数据并将其显示到前端(这可行)并且还具有添加到购物车的功能。我正在尝试将请求的项目存储到本地存储中并使用状态,当用户单击添加到购物车时,它应该将项目或对象存储在他们的本地存储中。当我单击添加到购物车时,它会被添加 cartItems [object Object](这不是可点击的),这不是我想要的。我想将实际对象存储在本地存储中。
import { Card, Button } from 'react-bootstrap'
import axios from 'axios'
function HomeScreen() {
const [products, setProducts] = useState([])
const [cart, setCart] = useState([])
function handleClick(id) {
const chosen_product = axios.get(`http://localhost:8000/api/products/${id}`)
setCart(cart + {chosen_product})
localStorage.setItem("cartItems", cart)
}
useEffect(() => {
async function getProducts() {
try {
const response = await axios.get('http://localhost:8000/api/products/');
setProducts(response.data);
} catch (error) {
console.error(error);
}
}
getProducts()
},[])
return (
<div>
{products.map(product => (
<Card className="my-3 p-3 rounded" key={product.id}>
<Card.Img src={'http://localhost:8000' + product.image} />
<Card.Body>
<Card.Title as="div">
<strong>{product.name}</strong>
</Card.Title>
<Card.Text as="div">
</Card.Text>
<Card.Text as="h3">
${product.price}
</Card.Text>
<Card.Link>
<Button onClick={()=>handleClick(product.id)} className="btn-primary">Add to cart</Button>
</Card.Link>
</Card.Body>
</Card>
))}
</div>
)
}
export default HomeScreen
【问题讨论】:
标签: javascript reactjs