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;
这是我的代码,我得到了错误: TypeError:this.props.map不是函数 我的默认道具不是数组吗?为什么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: '
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'))
Shoutthis.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>);
}