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

React TypeScript组件接收字符串数组Props报错,求正确实现方式

问题解决:React TypeScript组件接收字符串数组的正确方式

错误原因

你代码里的报错是因为直接在this.props对象上调用了map方法,但this.props是包含names数组的整个Props对象,并不是数组本身,所以TypeScript会提示找不到map方法。

修正后的代码

把this.props.map改成this.props.names.map,就能正确遍历数组了:

import * as React from 'react';

export interface IListNameProps {
    names: string[]
}

export interface IListNameState {

}

export default class ListName extends React.Component<IListNameProps, IListNameState> {

  constructor(props: IListNameProps) {
    super(props);
    this.state = {}
  }

  public render() {
    return (
        <ul>
          {/* 访问props里的names数组进行遍历 */}
          {this.props.names.map((name) => (
            <li key={name}>{name}</li>
          ))}
        </ul>
      );
  }
}

传递字符串数组的正确方式

在父组件中使用ListName组件时,直接通过names属性传入字符串数组即可:

// 父组件示例
import ListName from './ListName';

function ParentComponent() {
  const nameList = ["张三", "李四", "王五"];
  return <ListName names={nameList} />;
}

额外建议

为了避免数组为空或未传递时的报错,可以给Props里的数组添加可选标识,并在渲染时做兜底处理:

// 修改接口,把names设为可选
export interface IListNameProps {
    names?: string[]
}

// 渲染时兜底为空数组
public render() {
  const { names = [] } = this.props;
  return (
      <ul>
        {names.map((name) => (
          <li key={name}>{name}</li>
        ))}
      </ul>
    );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:54:59