Javascript 为什么this.props.map不是一个函数? 类Pokedex扩展组件{ 静态道具= [ {id:4,名字:'Charmander',类型:'fire',基本经验:62}, {id:7,名称:'Squirtle',类型:'water',基本经验:63}, {id:11,名称:'Metapod',类型:'bug',基本经验:72}, {id:12,名字:'Butterfree',类型:'flying',基地经验:178}, {id:25,姓名:'Pikachu',类型:'electric',基本经验:112}, {id:39,name:'Jigglypuff',type:'normal',base_experience:95}, {id:94,名字:'Gengar',类型:'poison',基本经验:225}, {id:133,名称:'Eevee',类型:'normal',基本经验:65}, ]; render(){ 返回( Pokedex {this.props.map((item)=>{return}); ) } } 导出默认Pokedex;

Javascript 为什么this.props.map不是一个函数? 类Pokedex扩展组件{ 静态道具= [ {id:4,名字:'Charmander',类型:'fire',基本经验:62}, {id:7,名称:'Squirtle',类型:'water',基本经验:63}, {id:11,名称:'Metapod',类型:'bug',基本经验:72}, {id:12,名字:'Butterfree',类型:'flying',基地经验:178}, {id:25,姓名:'Pikachu',类型:'electric',基本经验:112}, {id:39,name:'Jigglypuff',type:'normal',base_experience:95}, {id:94,名字:'Gengar',类型:'poison',基本经验:225}, {id:133,名称:'Eevee',类型:'normal',基本经验:65}, ]; render(){ 返回( Pokedex {this.props.map((item)=>{return}); ) } } 导出默认Pokedex;,javascript,reactjs,Javascript,Reactjs,这是我的代码,我得到了错误: TypeError:this.props.map不是函数 我的默认道具不是数组吗?为什么map方法对它不起作用 class Pokedex extends Component { static defaultProps = [ {id: 4, name: 'Charmander', type: 'fire', base_experience: 62}, {id: 7, name: 'Squirtle', type: '

这是我的代码,我得到了错误:

TypeError:this.props.map不是函数

我的默认道具不是数组吗?为什么
map
方法对它不起作用

class Pokedex extends Component {
    static defaultProps =
    [
        {id: 4, name: 'Charmander', type: 'fire', base_experience: 62},
        {id: 7, name: 'Squirtle', type: 'water', base_experience: 63},
        {id: 11, name: 'Metapod', type: 'bug', base_experience: 72},
        {id: 12, name: 'Butterfree', type: 'flying', base_experience: 178},
        {id: 25, name: 'Pikachu', type: 'electric', base_experience: 112},
        {id: 39, name: 'Jigglypuff', type: 'normal', base_experience: 95},
        {id: 94, name: 'Gengar', type: 'poison', base_experience: 225},
        {id: 133, name: 'Eevee', type: 'normal', base_experience: 65},
    ];
    render(){
        return(
            <div className="Pokedex">
                <h1>Pokedex</h1>
                {this.props.map((item) => {return <Pokecard {...item} />})};


            </div>
        )
    }
}

export default Pokedex;
然后像这样迭代

 state = { 
    array:[
        {id: 4, name: 'Charmander', type: 'fire', base_experience: 62},
        {id: 7, name: 'Squirtle', type: 'water', base_experience: 63},
        {id: 11, name: 'Metapod', type: 'bug', base_experience: 72},
        {id: 12, name: 'Butterfree', type: 'flying', base_experience: 178},
        {id: 25, name: 'Pikachu', type: 'electric', base_experience: 112},
        {id: 39, name: 'Jigglypuff', type: 'normal', base_experience: 95},
        {id: 94, name: 'Gengar', type: 'poison', base_experience: 225},
        {id: 133, name: 'Eevee', type: 'normal', base_experience: 65},
    ]};
{this.state.array.map((item)=>{return});

此.props
是一个对象。在将项目映射到
Pokecard
组件之前,您可能希望将其移动到数组中:

{this.state.array.map((item) => {return <Pokecard {...item} />})};
render(){
const pokes=[];
用于(此.props中的常量项){
戳.推(这个.道具[项目]);
}
返回(
Pokedex
{pokes.map(item=>)}
);
}

在React中,
道具始终是一个对象

当您尝试将数组分配给defaultProps时,该数组将
转换为object
。所以
这个.props.map
不是一个函数

您可以注释错误行,然后添加
{JSON.stringify(this.props)}

类Pokedex扩展了React.Component{
静态defaultProps=[
{id:4,名字:'Charmander',类型:'fire',基本经验:62},
{id:7,名称:'Squirtle',类型:'water',基本经验:63},
{id:11,名称:'Metapod',类型:'bug',基本经验:72},
{id:12,名字:'Butterfree',类型:'flying',基地经验:178},
{id:25,姓名:'Pikachu',类型:'electric',基本经验:112},
{id:39,name:'Jigglypuff',type:'normal',base_experience:95},
{id:94,名字:'Gengar',类型:'poison',基本经验:225},
{id:133,名称:'Eevee',类型:'normal',基本经验:65}
]
渲染(){
返回(
Pokedex
{/*this.props.map((项)=>{return})*/}
{JSON.stringify(this.props)}
)
}
}
ReactDOM.render(,document.getElementById('root'))


Shout
this.props
而不是
this.defaultProps
?不
defaultProps
是一个特殊的关键字,我可以使用
props
访问其中的道具,谢谢!这是可行的,但我希望有一种只使用道具,不使用状态的方法。。因为我很好奇为什么我的
this.props数组
没有被识别为array@AlexDobre你在这里收到其他组件的消息了吗?这是给你参考的。
render() {
  const pokes = [];
  for (const item in this.props) {
    pokes.push(this.props[item]);
  }
  return (<div className="Pokedex">
    <h1>Pokedex</h1>
    {pokes.map(item => <Pokecard { ...item } />) }
  </div>);
}