Карта объекта не функция - PullRequest
       6

Карта объекта не функция

0 голосов
/ 26 сентября 2018

У меня проблема, я не понимаю, почему у меня ошибка "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 голосов
/ 26 сентября 2018

Вы не присвоили значение 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]));
0 голосов
/ 26 сентября 2018

Вы можете вызывать функцию карты только для массива.Карта не может быть вызвана на объектах.Но, тем не менее, если вы хотите перебрать объект, вы можете сделать это следующим образом, проверьте пример ниже

const obj = {'name':'somename','age':23}
Object.keys(obj).map(key => console.log(obj[key]));
0 голосов
/ 26 сентября 2018

Это потому, что Object.map не существует.То, что вы хотите сделать, это сопоставить массив студентов (который должен присутствовать в состоянии / реквизите вашего компонента).

Это может быть достигнуто с помощью:

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