开发者问题收集

为什么我不能将数组作为 props 从一个 js 传递到另一个 js?

2020-12-07
82

我有三个 js 文件 App.jsPeopleData.jsPeopleDetail.js

App.js 是包含所有其他组件(包括 PeopleDetail.js )的主应用程序 PeopleData.js 包含导入到 App.js 的 JSON 数组数据 PeopleDetail.js 是显示来自 PeopleData.js 的数据的组件

但我试图将 JSON 从 App.js 传递到 PeopleDetail.js 作为 props,它会将其更改为对象而不是数组。

这是 App.js

import React from "react";
import PeopleData from "./PeopleData";
import PeopleDetail from "./PeopleDetail";

function App() {
console.log(PeopleData)
  return (
    <div>
          <PeopleDetail props={PeopleData} />
    </div>
  );
}

export default App;

即使我使用 console.log 来确保我传递的 JSON 是一个数组,它最终仍会成为 PeopleDetail.js ,我无法在其上使用地图功能。

这是 PeopleDetail.js

import React from "react";

function PeopleDetail(props) {
  console.log(props);
  const list = props.map((people) => (
    <div key={people.id}>
      <li>
        <h1>{people.name}</h1>
      </li>
    </div>
  ));

  return <div>{list}</div>;
}

export default PeopleDetail;

这是 PeopleDetail.js

const peopleData = [
  {
    name: "Peter",
    id: 1,
  },
  {
    name: "Tom",
    id: 2,
  },
];
export default peopleData;

如能提供任何帮助,我们将不胜感激!!!非常感谢!

1个回答

您需要从 props 对象中提取 peopleData 。您可以使用如下所示的解构方法,或者只需将您的映射更改为 props.people.map(...) 。我建议您将属性命名为 props 以外的其他名称,这样您就不会与普通的 props 对象混淆。现在您有一个带有 props 数组的 props 对象。

import React from "react";
import PeopleData from "./PeopleData";
import PeopleDetail from "./PeopleDetail";

function App() {
console.log(PeopleData)
  return (
    <div>
          <PeopleDetail people={PeopleData} />
    </div>
  );
}

export default App;
import React from "react";

function PeopleDetail({ people }) {
  console.log(people);
  const list = people.map((person) => (
    <div key={person.id}>
      <li>
        <h1>{person.name}</h1>
      </li>
    </div>
  ));

  return <div>{list}</div>;
}

export default PeopleDetail;
Todd Skelton
2020-12-07