nox*_*sta 8 javascript arrays reactjs
我正在编码一个包含多个页面的网站。一个页面ComponentA,具有一个子组件,该子组件返回带有标题和段落的部分。
ComponentA传递数据中的数组作为对子项的支持。在孩子内部,一个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"]
};
Run Code Online (Sandbox Code Playgroud)
子组件:
const Child = ({ text, title }) => {
return (
<div>
{text.map(text => {
return (
<div>
<h3>{title}</h3>
<p>{text}</p>
</div>
);
})}
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
你的info对象不是一个可迭代的列表- 所以我会将它们转换成一个列表,{title, text}如下所示:
const data = info.title.map((e,i) => {
return {title : e, text: info.text[i]}
})
Run Code Online (Sandbox Code Playgroud)
现在我将把map()函数转移到ComponentA而不是Child因为这使得子组件更有意义。
请参阅下面的演示:
const data = info.title.map((e,i) => {
return {title : e, text: info.text[i]}
})
Run Code Online (Sandbox Code Playgroud)
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'));Run Code Online (Sandbox Code Playgroud)
您可以像这样更改您的子组件,因为它text是一个数组,因此您需要通过索引访问它的值。
const Child = ({ text, title }) => {
return (
<div>
{text.map((text,index) => {
return (
<div>
<h3>{title[index]}</h3>
<p>{text}</p>
</div>
);
})}
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
您甚至可以将父组件更改为这样的
import Child from "../components/child";
const ComponentA = () => {
<Layout>
<h1>Home Page</h1>
{info.text.map((text,index)=> <Child title={info.title[index]} text={text} />}
</Layout>
}
const info = {
title: ["Title1", "Title2"],
text: ["Paragraph1", "Paragraph2"]
};
Run Code Online (Sandbox Code Playgroud)
然后你的孩子应该是
const Child = ({ text, title }) => {
return (
<div>
<h3>{title}</h3>
<p>{text}</p>
</div>
);
};
Run Code Online (Sandbox Code Playgroud)