数组映射始终不是一个函数

Array mapping is always not a function

提问人:Melonendk 提问时间:8/24/2021 最后编辑:AndyMelonendk 更新时间:8/24/2021 访问量:45

问:

我一直在摆弄数组并使用功能映射它们,老实说,我一直在为 ALOT 而苦苦挣扎,所以我希望有人可以分享一些关于这一点的信息。Array.prototype.map()

因此,我的目标很简单,在我的自定义组件中的表格中映射一些标题和行,但是当我进行映射时,它总是说事件,我指定了它的数组,并且它有我从我的页面传递的值。 我已经测试过它是否是因为它空的,但似乎不是这样。"variable.map() is not a function"

我的页面现在就是这样。

import AppLayout from '../../../components/AppLayout';
import Table from '../../../components/modules/Table';

export default function Products() {
  return (
    <AppLayout>
      <section className="content">
        <h3 className="text-3xl font-bold">Products</h3>
        <Table
          headings={[
            '',
            'Product',
            'Status',
            'Type',
          ]}
        />
      </section>
    </AppLayout>
  );
}

至于我的桌子,它的:

export default function Table(headings = [], rows = {}) {
  const top = headings.map((value) => (
    <th
      key={value}
      scope="col"
      className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
    >
      {value}
    </th>
  ));

  return (
    <div className="flex flex-col">
      <div className="-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
        <div className="py-2 align-middle inline-block min-w-full sm:px-6 lg:px-8">
          <div className="shadow overflow-hidden border-b border-gray-200 sm:rounded-lg">
            <table className="min-w-full divide-y divide-gray-200">
              <thead className="bg-gray-50">
                {top}
              </thead>
              <tbody>
                {rows}
              </tbody>
            </table>
          </div>
        </div>
      </div>
    </div>
  );
}

我在映射数组方面遇到了其他问题,但这是我最喜欢的问题,我总是失败一个idk为什么如此烦人。

提前致谢

JavaScript 数组 ReactJS

评论


答:

2赞 Abbasihsn 8/24/2021 #1

我检查了你的地图,它工作正常。我认为问题出在您的数据提取上。您应该按如下方式修改代码:

export default function Table({headings = [], rows = {}}) {

export default function Table(props) {
  {headings, rows} = props;

评论

0赞 Melonendk 8/24/2021
谢谢我,这是我不知道的事情哈哈,它只是有时最小的问题,似乎是最烦人的,但再次感谢。
2赞 Andy 8/24/2021 #2

组件 props 将始终是一个对象,因此您需要从该对象中解构属性:

Table({ headings = [], rows = [] })

我也将行更改为数组,因为尽管您目前没有将任何行属性传递到该组件中,但我很确定它也将是一个也需要翻越的数组。map

评论

1赞 Melonendk 8/24/2021
谢谢,这是真的,但就我而言,我需要这个对象,但最好在上面使用数组以用于未来的开发。
1赞 Andy 8/24/2021
理想情况下,您只想交给组件,然后使用它的内部函数来分离标题和行。dataTable