我正在编码一个包含多个页面的网站。页面ComponentA
,具有一个子组件,该子组件返回带有标题和段落的部分。ComponentA
中的数组将数据作为 Prop 传递给子级。在 child 内部,一个map函数返回正确的段落。标题缺少什么,如何将title1
传递给paragraph1
,将title2
传递给paragraph2
等等?
组分A:
import Child from "../components/child";
const ComponentA = () => {
<Layout>
<h1>Home Page</h1>
<Child title={info.title} text={info.text} />
</Layout>
}
const info = {
title: ["Title1", "Title2"],
text: ["Paragraph1", "Paragraph2"]
};
子组件:
const Child = ({ text, title }) => {
return (
<div>
{text.map(text => {
return (
<div>
<h3>{title}</h3>
<p>{text}</p>
</div>
);
})}
</div>
);
};
最佳答案
您的info
对象不是可迭代的列表-因此,我将其转换为列表{title, text}
,如下所示:
const data = info.title.map((e,i) => {
return {title : e, text: info.text[i]}
})
现在,我将
map()
函数更改为ComponentA
而不是Child
,因为这会使子组件更有意义。请参见下面的演示:
const info = {
title: ["Title1", "Title2"],
text: ["Paragraph1", "Paragraph2"]
};
const data = info.title.map((e,i) => {
return {title : e, text: info.text[i]}
})
const ComponentA = () => {
return (
<div>
<h1>Home Page</h1>
{ data.map(item => {
return (
<Child key={item.title} title={item.title} text={item.text} />
);
})
}
</div>
)
}
const Child = ({ text, title }) => {
return (
<div>
<h3>{title}</h3>
<p>{text}</p>
</div>
);
};
ReactDOM.render(
<ComponentA/>,
document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"/>