对象映射不是函数

时间:2018-09-26 09:11:58

标签: reactjs react-router axios

我有问题,我不明白为什么会出现错误“ Object.map不是函数...

您可以在这里看到我的代码:

  onClick(student_id)
 {
let session_id = this.props.match.params.id
let config = {
  headers: {
  'Accept': 'application/json',
  'Content-Type': 'application/json',
  'Authorization': `Bearer ${authentication.getToken()}`
  }
}
axios.post(`http://127.0.0.1:8000/api/sessions/${session_id}/students/${student_id}`, config)
.then(response => {
  this.props.history.push('/')
}).catch(err => console.log(err));

}

 render() {
  const students = Object.map(student => (
    <ul>
      <button onClick={this.onClick(student.id)} >Ajouter 
 {student.name} à la session</button>
    </ul>
  ));
return (

有人可以指导我解决此问题吗? 谢谢

3 个答案:

答案 0 :(得分:0)

这是因为Object.map不存在。您想要做的是在学生数组上映射(该数组必须出现在组件的状态/属性中)。

这可以通过使用:

students.map(student => (<ul>your code here</ul>))

答案 1 :(得分:0)

您没有为Object分配任何值,并且由于Object是保留关键字,您也无法执行此操作。 Object没有称为map的方法,但Array有。

let arr = [{name: 'Name1', age: 23}, {name: 'Name2', age: 24}, {name: 'Name3', age: 21}]

let stdObj = {name: 'Name1', age: 23, student: true}

//Map an Array
arr.map(obj => console.log(obj.name));

//Map an Object
Object.keys(stdObj).map(data => console.log(stdObj[data]));

答案 2 :(得分:0)

您只能在数组上调用映射函数。不能在对象上调用地图。但是,如果要遍历对象,可以这样做,请检查以下示例

const obj = {'name':'somename','age':23}
Object.keys(obj).map(key => console.log(obj[key]));