【发布时间】:2021-02-08 15:35:28
【问题描述】:
这是我的示例嵌套 json - 最低级别的 json 包含道具的条目(例如,articleClassName 是道具,特色图像是需要传递的道具值。)
{
"TopTrends": {
"Game1": {
"articleClassName": "image featured",
"imgSource": "../../../static/images/crsed (1)306.jpg",
"articleHeader": "Cuisine Royale - Desktop Game",
"articleDescr": "Most Popular games in US. 1+ millions players are playing now. Join your rivelaries.",
"buttonClassName": "search-container",
"articleUrl": "'google.com'",
"articleLabel": "Play Now"
},
"Game2": {
"articleClassName": "image featured",
"imgSource": "../../../static/images/crsed (1)307.jpg",
"articleHeader": "Cuisine Royale - Desktop Game",
"articleDescr": "Most Popular games in US. 1+ millions players are playing now. Join your rivelaries.",
"buttonClassName": "search-container",
"articleUrl": "'google.com'",
"articleLabel": "Play Now"
}
},
"Travel": {
"Travel1": {
"articleClassName": "image featured",
"imgSource": "../../../static/images/crsed (1)300.jpg",
"articleHeader": "Cuisine Royale - Desktop Game",
"articleDescr": "Most Popular games in US. 1+ millions players are playing now. Join your rivelaries.",
"buttonClassName": "search-container",
"articleUrl": "'google.com",
"articleLabel": "Play Now"
},
"Travel2": {
"articleClassName": "image featured",
"imgSource": "../../../static/images/crsed (1)300.jpg",
"articleHeader": "Cuisine Royale - Desktop Game",
"articleDescr": "Most Popular games in US. 1+ millions players are playing now. Join your rivelaries.",
"buttonClassName": "search-container",
"articleUrl": "'google.com'",
"articleLabel": "Play Now"
}
},
"Household": {
"Household1": {
"articleClassName": "image featured",
"imgSource": "../../../static/images/crsed (1)300.jpg",
"articleHeader": "Cuisine Royale - Desktop Game",
"articleDescr": "Most Popular games in US. 1+ millions players are playing now. Join your rivelaries.",
"buttonClassName": "search-container",
"articleUrl": "'google.com'",
"articleLabel": "Play Now"
},
"Household2": {
"articleClassName": "image featured",
"imgSource": "../../../static/images/crsed (1)300.jpg",
"articleHeader": "Cuisine Royale - Desktop Game",
"articleDescr": "Most Popular games in US. 1+ millions players are playing now. Join your rivelaries.",
"buttonClassName": "search-container",
"articleUrl": "'google.com'",
"articleLabel": "Play Now"
}
}
}
我有一个组件需要传递这些道具 -
import React from 'react';
import './style.css';
export default function Article(props) {
return (
<article>
<a href="#" className={props.articleClassName}><img src={props.imgSource} alt="" /></a>
<header>
<h3><a href="#">{props.articleHeader}</a></h3>
</header>
<p>{props.articleDescr} </p>
<button className={props.buttonClassName} onclick={props.articleUrl} type="text"> {props.articleLabel} </button>
</article>
)
}
以及上述组件需要根据json文件返回的行数动态嵌入的主组件-
export default function Carousel() {
const [data , setData]=useState([]);
const getData=()=>{
fetch('./CarouselData.json'
,{
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
}
)
.then(function(response){
console.log('this is the response ' + response)
// console.log(response)
return response.json();
})
.then(function(myJson) {
// console.log(myJson);
setData(myJson)
});
}
useEffect(()=>{
getData()
},[]);
return (
<div style={{ top: 0 }}>
<section className="carousel">
<div className="reel">
<article>
<Article articleClassName="image featured" imgSource="../../../static/images/crsed (1)300.jpg"
articleHeader="Cuisine Royale - Desktop Game"
articleDescr="Most Popular games in US. 1+ millions players are playing now. Join your rivelaries."
buttonClassName="search-container"
articleUrl="'https://google.com'"
articleLabel="Play Now"
/>
</div>
</section>
</div>
)
}
如您所见,在上面的组件中,组件在将 props 传递给它后正在被渲染。我想循环遍历json数据(数据)并在渲染这个组件时动态传递props。
我尝试将 data 变量转换为数组 - 但对 javascript 和 react 不熟悉 - 总是出现语法错误。任何帮助,将不胜感激。如果发布的代码中有语法错误,请忽略 - 我已经删除并复制了很多东西粘贴到这里。
【问题讨论】:
标签: javascript json reactjs