React, undefined - это не объект - данные json

Я пытаюсь перебрать массив данных. Я следовал руководству, но, к сожалению, не добился такого же успеха. Файл данных выглядит так:

import React, {Component} from 'react';
export default  [
{ id: 1, lk:593458, ld:18033, status: 'Open'},
{ id: 2, lk:593388, ld:18036, status: 'Closed'},
{ id: 3, lk:593420, ld:18047, status: 'Open'}
]

и файл, в котором я пытаюсь работать с данными, вот так:

  import data from './data';

  const {data} = this.props;
  let markers = this.data.map(id => (

Независимо от того, что я получаю ошибку «undefined не является объектом (оценка this.data.map. Где я облажался? Спасибо

Что означает ваш второй фрагмент? Что там this?

zerkms 22.04.2018 23:57

Похоже, вы переназначаете импорт data со своей деструктуризацией?

CertainPerformance 22.04.2018 23:59

Вы говорите о let markers = this.data.map (id =>? Я пробовал разные версии, но это не работает. То же самое, если я удалю его и получу data.map. Кроме того, я очень новичок реагировать, поэтому я не понимаю, что вы имеете в виду под деструктуризацией @CertainPerformance

J. Doe 23.04.2018 00:02

@ J.Doe это не о деструктуризации. Вы импортировали data в первой строке, но никогда не использовали его.

zerkms 23.04.2018 00:07

@ J.Doe вам нужно предоставить компонент, чтобы люди помогли вам, на данный момент вы разместили случайные 3 строки кода, которые не имеют смысла.

zerkms 23.04.2018 00:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
179
2

Ответы 2

this.data тогда не определился?

Ты можешь сделать:

data.map(e => {})

Ваш второй вариант заставит мой код выглядеть так? К сожалению, при этом я получаю неожиданную ошибку токена. const {данные} = this.props; let markers = this.props.data.map (id => {} (// код для выполнения

J. Doe 23.04.2018 00:11

Ой! Только что понял, что вы повторно объявляете переменную. Я уверен, что вы видите ошибку: Duplicate declaration "data"? Прочтите developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…, чтобы узнать варианты решения этой конкретной проблемы.

Magd Kudama 23.04.2018 00:16

Самый простой вариант: this.props.data = data, но есть и другие варианты

Magd Kudama 23.04.2018 00:17

@MagdKudama какой смысл мутировать this.props? Это вообще разрешено?

zerkms 23.04.2018 00:18

В коде я не вижу, является ли это компонент React или нет. Да, в контексте компонента React свойства неизменяемы.

Magd Kudama 23.04.2018 00:21

@zerkms отредактировал комментарий, удалил присвоение реквизита, чтобы не путать OP

Magd Kudama 23.04.2018 00:27

Вы не можете повторно объявить импортированную переменную.

import data from './data';

const {data} = this.props;

Вторая строка повторно объявляет переменную data, которую вы уже импортировали из модуля ./data.

Вы можете использовать синтаксис import x as y from './module для переименования импортированного модуля или не использовать деструктуризацию в строке 2: const _data = this.props.data.

Зачем им использовать this.props.data, если данные уже есть в data?

zerkms 23.04.2018 00:07

Я также не знаю контекста того, что делает OP. По какой-то причине им может потребоваться использовать значение this.props.data.

Tsvetan Ganev 23.04.2018 00:08

На самом деле это то, чего они не могут понять, и я думаю, что ответы перед ними с предоставлением их компонентов (а не просто случайных строк) и объяснения того, что они делают / ожидают, принесут больше вреда, а не помогут.

zerkms 23.04.2018 00:09

Вы правы, @zerkms, я не знаю, что делаю, и не понимаю, о чем вы с цветаном говорите. Я очень стараюсь понять, что я делаю. Хотя я благодарен за вашу помощь

J. Doe 23.04.2018 00:18

@ J.Doe, все в порядке, никто тебя не винит - обучение - это естественный процесс. Но чтобы ответить на ваш вопрос, вам нужно предоставить больше контекста: по крайней мере, ваш компонент + намерения.

zerkms 23.04.2018 00:19

Другие вопросы по теме