提问人:Melonendk 提问时间:8/24/2021 最后编辑:AndyMelonendk 更新时间:8/24/2021 访问量:45
数组映射始终不是一个函数
Array mapping is always not a function
问:
我一直在摆弄数组并使用功能映射它们,老实说,我一直在为 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为什么如此烦人。
提前致谢
答:
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
理想情况下,您只想交给组件,然后使用它的内部函数来分离标题和行。data
Table
评论