You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React组件传数组后调用map报is not a function错误如何解决

问题原因

  • 传参方式错误:App组件中你使用展开运算符{...positions}传入数组,React组件接收的所有参数都会被封装为props对象,展开数组相当于把数组的索引作为props的键逐个传递,而非将整个数组作为单个prop传入。
  • 组件参数定义不规范:React函数组件的第一个参数永远是整体的props对象,你直接声明参数为posList: LiquidityPosition[],本质是把整个props对象赋值给了posList变量,它自然不是数组,没有map方法。

修复方案

第一步:修改App.tsx的传参逻辑

将展开数组的写法改为传入名为posList的prop,值为你的positions数组:

// App.tsx 修正后代码
import React, { useState } from 'react';
import LiquidityList from './components/LiquidityList';
import { LiquidityPosition } from './components/Liquidity'

function App() {
  let positions: LiquidityPosition[] = [
    {
      time: new Date(2018, 11, 24, 10, 33, 30, 0),
      sizeA: 2,
      sizeB: 1
    }
  ]
  return (
    <>
      <LiquidityList posList={positions}/>
    </>
  )
}

export default App;

第二步:修改LiquidityList的参数类型定义

调整组件参数,从props对象中解构出posList,同时声明对应的类型:

// LiquidityList.tsx 修正后代码
import React from 'react'
import { LiquidityPosition } from './Liquidity';
import Liquidity from './Liquidity';

// 可以提前声明Props接口让代码更易维护
interface LiquidityListProps {
  posList: LiquidityPosition[]
}

export default function LiquidityList({ posList }: LiquidityListProps) {
  return (
    <>
      {
        posList.map(pos => <Liquidity {...pos}/>)
      }
    </>
  )
}

内容的提问来源于stack exchange,提问作者facetiousfactorial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:15:02