не может получить доступ к массиву объектов в объекте - PullRequest
0 голосов
/ 06 мая 2020

Меня сбивает с толку, почему я получаю сообщение об ошибке при попытке доступа к массиву внутри объекта в ReactJS.

Я использую Redux для хранения объекта в состоянии.

У меня есть функция успеха, которая позволяет отрисовывать страницу, поэтому к тому времени, когда я доберусь до этого объекта, он наверняка загрузится. (Я заметил массу подобных вопросов, где обычно проблема).

Когда я это делаю, я получаю правильные результаты:

const { events } = this.props
console.log(JSON.stringify(events.listSignup))

{"data":[{"eventID":"264712106049274377","name":"BookOne","email":null,"verify":null,"privacy":null,"order":null,"group":null},{"eventID":"264712106049274377","name":"BookTwo","email":null,"verify":null,"privacy":null,"order":null,"group":null}]}

Я вижу, что массив "data "существует, но когда я пытаюсь:

    console.log(JSON.stringify(events.listSignup.data[0].name))

или

    console.log(JSON.stringify(events.listSignup.data[0]))

, я получаю" TypeError: Не удается прочитать данные свойства undefined "

Я в конце концов пытаюсь понять, что происходит. Любой совет будет очень признателен!

1 Ответ

1 голос
/ 06 мая 2020

Вы правы, что сбиты с толку, потому что то, что вы [думаете, что вы] наблюдали, невозможно.

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

Я подозреваю, что при первом рендеринге вашего компонента this.props.events равно undefined , но затем он очень быстро перерисовывается с установленным this.props.events.

Я бы предложил добавить эту строку (без других):

console.log(JSON.stringify(events.listSignup))

И прокручивать вверх в вашем javascript, чтобы узнать, есть ли у вас журналы, в которых просто отображается undefined. Если это так, вам, вероятно, нужно дважды проверить logi c, который препятствует отображению страницы, прежде чем вы успешно получите данные, поскольку я подозреваю, что именно в этом ваша проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...