【发布时间】:2021-06-20 09:24:20
【问题描述】:
我有一个关于 React 映射的非常基本的问题。 所以我有一个这样的 JSON:
{
"Status": true,
"discounts": {
"individual": {
"number_of_cars_discount": {
"1": "1",
"10": "1",
"2": "0.98",
"3": "1",
"4": "1",
"5": "1",
"6": "1",
"7": "1",
"8": "1",
"9": "1"
}
}
}
}
并且 individualPosts 是在价格系数组件中定义的:
export default function PriceCoefficient() {
const [individualPosts, setIndividualPosts] = useState([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(false);
useEffect(() => {
const fetchPosts = async () => {
try {
if (res.status == 200) {//TODO: JSON Encode here?, full repsponse ore response.data as return?
setIndividualPosts(res.data.discounts.individual.number_of_cars_discount);
}
setLoading(false);
} catch (err) {
setError(err.message);
setLoading(false);
}
};
fetchPosts();
}, []);
return (
<>
<PanelHeader size="sm" />
<div className="content">
<Row>
<Col xs={12}>
<Card>
<CardHeader>
<CardTitle tag="h4">PRICE COEFFICIENT</CardTitle>
</CardHeader>
<CardBody>
<Table responsive>
<thead className="text-primary">
<tr>
<th>Customer Type</th>
<th>Discount</th>
</tr>
</thead>
<PricePosts
individualPosts={individualPosts}
loading={loading}
error={error}
/>
</Table>
</CardBody>
</Card>
</Col>
</Row>
</div>
</>
);
}
在另一个组件中,我只是将 individualPosts 作为我想在桌子上展示的道具:
<tbody>
<tr>
<td>Individual</td>
{individualPosts.map((post, index) => (
<td key={`individual-posts-${index}`}>{post.discount}</td>
))}
</tr>
</tbody>.
我不明白为什么,但我得到了 individualPosts.map 不是一个函数,我理解它被定义为一个对象,但有解决方案吗?
谢谢
【问题讨论】:
-
请显示您的组件的所有内容
-
真的很重要吗?我定义 setIndividualPosts(res.data.discounts.individual.number_of_cars_discount);
-
这关系到你定义状态
individualPosts和你如何称呼setIndividualPosts -
希望现在更清楚,我刚刚编辑了问题
-
res.data.discounts.individual.number_of_cars_discount是一个对象,但您使用individualPosts.map就像一个arrry
标签: json reactjs dictionary object