Как я могу отображать ошибки в React; я получаю ошибки массива от redux?

это мой массив redux, который я получаю от backend node js api

errors:
errors: Array(1)
0: {location: "body", param: "name", value: "mamadou bah transfert", msg: "ce nom est déja utilisé"}
length: 1

И в React я пытаюсь показать такие ошибки

<div class = "col m12">
  {this.props.offices.errors.errors?
  <span className = "center-align red-text">
			{this.props.offices.errors.errors.map((error,i) => <p key = {i}>       {error.param=='name'?error.msg:''}</p>) 
      </span> : '' }
</div>

это ошибки, которые я получаю всегда

реагировать ошибки

сделай console.info(this.props.offices) и напиши здесь вывод. Тогда я могу помочь вам, так как мне нужно увидеть структуру вашего объекта / списка.

sbqq 01.12.2018 15:51

Код в вашей ошибке не соответствует коду в вашем вопросе. this.props.offices.errors ? против this.props.offices.errors.errors ? .

Andy 01.12.2018 15:53
Поведение ключевого слова "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) для оценки ваших знаний,...
0
2
644
2

Ответы 2

Поскольку errors поступает из асинхронного запроса, вы должны защитить случай, когда объект еще не существует.

this.props.offices && this.props.offices.errors.errors.map(...)

Однако, чтобы быть на 100% уверенным, что это не произойдет, я бы использовал значение по умолчанию offices, а также проверял, существует ли errors и это повторяемый массив.

const { offices = {} } = this.props;

offices.errors && Array.isArray(offices.errors.errors) && offices.errors.errors.map(...);

в этом может быть дело :)

sbqq 01.12.2018 15:54

Попробуйте с этим

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

  <div class = "col m12">
        {this.props.offices && this.props.offices.errors && this.props.offices.errors.errors?
           <span className = "center-align red-text">
        {this.props.offices.errors.errors.map((error,i) => <p key = {"Key-"+i}>       {error.param=='name'?error.msg:''}</p>) 
           </span> : '' }
   </div>

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