javascript - 在 ReactJS 中单击特定选项卡时如何显示产品
问题描述
我使用了 React-Bootstrap 选项卡组件,并且我已经从后端 API 的选项卡中加载了我的类别。我有一个与类别 ID 匹配的产品列表,当我单击一个选项卡(例如水果)时,水果里面的产品(苹果,橙色应该被渲染..我怎么能得到这个我 试图得到的输出是图像在这里
我曾尝试将单击的类别 ID 作为道具传递给另一个组件,但我仍然无法得到这个
TabCategory.js
import {React, useState, useEffect} from 'react'
import TabContent1 from './TabContent'
import Axios from 'axios';
import Tabs from 'react-bootstrap/Tabs'
import Tab from 'react-bootstrap/Tab'
import '../StyleSheet.css'
function TabCategory() {
const baseUrl = 'http://localhost:3001/storeo247/api/v1/staging/product'
// STATE INITIALIZATION
const [ category, setCategory ] = useState([]);
const [key, setKey] = useState([]);
// API CALL
useEffect( () => {
Axios.get( baseUrl , {
method : 'GET',
headers : { 'content-type': 'application/json', 'Accept' : 'application/json' },
} )
.then(res => {
setCategory(res.data.data);
} )
.catch(err => {
console.log(err);
} )
}, [] )
const arraymap = category.map( (post,id)=> {
return(
<Tab
eventKey={post.main_category_id}
title={post.main_category}
id={post.main_category_id}
>
<TabContent1
categoryid= {key}
/>
</Tab>
);
} )
return (
<div class="container-fluid">
<h1 > Featured Products </h1>
<Tabs
// id="controlled-tab-example"
activeKey={key}
onSelect={(k) => setKey(k)}
className="mb-3"
>
{ arraymap }
</Tabs>
</div>
)
}
export default TabCategory
下面的代码是渲染产品的子组件
标签内容.js
import {React, useState, useEffect} from 'react'
import Axios from 'axios';
import '../StyleSheet.css'
import {
Card, CardImg, CardText, CardBody,
CardTitle, Button, CardGroup
} from 'reactstrap';
function TabContent1(props) {
const baseUrl = 'http://localhost:3001/storeo247/api/v1/staging/product '
// STATE INITIALIZATION
const [ content, setContent ] = useState([]);
// API CALL
useEffect( () => {
Axios.get( baseUrl , {
method : 'GET',
headers : { 'content-type': 'application/json',
'Accept' : 'application/json' },
params : { id : props.categoryid }
} )
.then(res => {
setContent(res.data.data);
console.log(res.data.data)
} )
.catch(err => {
console.log(err);
} )
}, [] )
const LoadProductsArray =
content.map( (item)=> {
<>
{ item.products.map( (inneritem) => {
return(
<div className="col-11 col-md-6 col-lg-2" key={inneritem.product_id} >
<Card>
<CardImg width="165px" height="165px" src= {inneritem.image} alt="Card image preview" />
<CardBody>
<CardTitle tag="h5">{inneritem.name}</CardTitle>
<CardText> {inneritem.actual_price} </CardText>
<Button> Add to Cart </Button>
</CardBody>
</Card>
</div>
);
} )
}
</>
})
return (
<>
<div class="container">
<CardGroup>
{ LoadProductsArray }
</CardGroup>
</div>
</> )
}
export default TabContent1;
解决方案
推荐阅读
- mariadb - MariaDB 崩溃原因
- chai - cypress 的单个语句中的多个断言
- c - 用c写一个简单的Linux shell
- kotlin - Kotlin 协程的 Jacoco 代码覆盖率不正确
- batch-file - 仅当该目录存在批处理脚本时才在目录中查找最新的子文件夹
- tfsbuild - 使用 dotnet pack 将变量传递给 nuspec
- image - ExifTools - 从 URL 添加缩略图
- html - 如何在鼠标悬停在角度 6 中的另一个按钮/卡上时取消选择选定的卡/按钮?
- rust - 如何使用 BorrowMut 超特征访问特征默认方法中的结构字段?
- reactjs - React 与 Puppeteer + 伊斯坦布尔的代码覆盖率