【发布时间】:2020-11-18 07:06:32
【问题描述】:
我的问题是,如何根据我在产品组件中选择的选项卡映射“产品”对象?示例:在 Products 组件中,它为每种类型的食物 (dataSaleThumb) 呈现 8 个选项卡,如果我选择 1 个选项卡(共 8 个),其值为 tab: "five",我需要过滤并映射出所有具有道具category: "food"。或者单击具有值 tab: "six" 的选项卡仅映射出具有 category:"beverages" 属性的产品。我希望你理解这个问题,我提前谢谢大家!
class ProductsStore {
@observable products = [
{
id: 1,
name: 'sandwich',
description: 'tasty',
price: 150,
catergory: "food"
},
{
id: 2,
name: 'fanta',
description: 'orange drink',
price: 250,
catergory: "beverage"
},
{
id: 3,
name: 'hamburger',
description: 'meat',
price: 350,
catergory: "food"
},
{
id: 4,
name: 'cola',
description: 'caramel drink',
price: 250,
catergory: "beverage"
}
];
}
export default ProductsStore;
import React, {Component} from "react";
import {View, Dimensions, TouchableOpacity,FlatList, Text} from "react-native";
import {Container, Content, List} from "native-base";
import {observer, inject} from "mobx-react";
import ThemeHeader from "../../components/Header/index.js";
import SaleThumb from "../../components/SaleThumb/index.js";
import SaleTitle from "../../components/SaleTitle/index.js";
import MyFooter from "../../components/Footer";
import styles from "./styles.js";
var deviceWidth = Dimensions.get("window").width;
var deviceHeight = Dimensions.get("window").height;
@inject("products")
@observer
class Product extends Component {
render() {
const navigation = this.props.navigation;
var dataSaleThumb = [
{
id: 1,
imageSaleThumb: require("../../../assets/p1.jpg"),
text: "ABCDFG",
tab: "one"
},
{
id: 2,
imageSaleThumb: require("../../../assets/p2.jpg"),
text: "ABCDFG",
tab: "two"
},
{
id: 3,
imageSaleThumb: require("../../../assets/p3.jpg"),
text: "ABCDFG",
tab: "three"
},
{
id: 4,
imageSaleThumb: require("../../../assets/p4.jpg"),
text: "ABCDFG",
tab: "four"
},
{
id: 5,
imageSaleThumb: require("../../../assets/p5.jpg"),
text: "ABCDFG",
tab: "five"
},
{
id: 6,
imageSaleThumb: require("../../../assets/p6.jpg"),
text: "ABCDFG",
tab: "six"
},
{
id: 7,
imageSaleThumb: require("../../../assets/p7.jpg"),
text: "ABCDFG",
tab: "seven"
},
{
id: 8,
imageSaleThumb: require("../../../assets/p8.jpg"),
text: "ABCDFG",
tab: "eight"
}
];
return (
<Container>
<ThemeHeader
PageTitle="PRODUCT"
IconLeft="ios-arrow-back"
route="homepage"
IconRight="ios-search"
navigation={navigation}
/>
<Content
showsVerticalScrollIndicator={false}
contentContainerStyle={{ paddingBottom: 10 }}
style={{ marginBottom: 50 }}
>
<FlatList
bounces={false}
contentContainerStyle={styles.saleThumb}
data={dataSaleThumb}
renderItem={item => (
<SaleThumb
navigation={navigation}
blockHeight={deviceHeight / 3 - 45}
blockWidth={deviceWidth / 3 - 10}
saleData={item.item.text}
imageSource={item.item.imageSaleThumb}
/>
)}
/>
</View>
</Content>
<MyFooter navigation={navigation} selected={"home"} />
</Container>
);
}
}
export default observer(Product);
【问题讨论】:
-
您应该将类别添加到 dataSaleThumb 因为没有办法说“一个”是“食物”,两个数组之间应该有一个链接来过滤
-
@Guruparan Giritharan 感谢您的帮助,但我仍然无法做我想做的事......
-
你好,你的问题应该指定如何过滤,不清楚
-
@Guruparan Giritharan 我以为我在第一篇文章中清除了它,当我在 Product 组件中按一个选项卡时,我需要将 MobX 商店中的产品过滤到另一个组件中,我只需要过滤具有特定类别的产品,就像我在开始时所说的,如果我选择标签 5,我需要过滤掉具有类别的产品:饮料。
标签: javascript reactjs react-native filter mapping