我正在编码一个包含多个页面的网站。页面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"/>

10-02 20:35