Невозможно прочитать карту свойства undefined - ошибка от ReactJS

Сообщение об ошибке:

Error: Cannot read property 'map' of undefined

Компонент React:

const checkBox = props => {
  return (
    <div>
      <label htmlFor = {props.name} className='form-label'>
        {props.title}
      </label>
      <div className='checkbox-group'>
        {
          props.options.map(option => {
            return (
              <label key = {option}>
                <input
                  className='form-checkbox'
                  id = {props.name}
                  name = {props.name}
                  onChange = {props.handleChangeEvent}
                  value = {option}
                  checked = {props.selectedOptions.indexOf(option) > -1}
                  type='checkbox'
                />{' '}
                {option}
              </label>
            )
          })
        }
      </div>
    </div>
  )
}

В моем коде что-то не так? Если да, дайте мне знать. Может ли кто-нибудь помочь мне в этом?

Ошибка

Cannot read property 'map' of undefined

Выдается при выполнении функции карты в компоненте списка комментариев.

Похоже, что options не может быть передан.

stealththeninja 22.12.2018 17:20

Можете ли вы показать, как вы используете checkbox и передаете реквизит? Если props является объектом, установите точку останова или console.info (), на что он установлен?

stealththeninja 22.12.2018 17:30

Я выполнил процедуру ниже, пожалуйста, проверьте

RamTeja 22.12.2018 17:42
codementor.io/blizzerand/…
RamTeja 22.12.2018 17:43

См. Пример в конце <Select/>, демонстрирующий, как передаются свойства. Вы с большей вероятностью получите помощь здесь, в Stack Overflow, предоставив достаточно информации другому разработчику, чтобы воспроизвести проблему самостоятельно.

stealththeninja 22.12.2018 17:52

так что я должен сделать то же самое для флажка?

RamTeja 22.12.2018 17:56

да. Автор начинает с того, что показывает, какие компоненты вам нужны в форме, а затем подробно описывает их метод рендеринга, обработчики событий и показывает пропсы для передачи. Он не показал эту деталь для реквизитов с <Checkbox/>, похоже, это упражнение. для публики. :)

stealththeninja 22.12.2018 17:58

у меня есть реквизит для флажка обновления

RamTeja 22.12.2018 18:06

<CheckBox title = {"Skills"} name = {"skills"} placeholder = {"Select Skills"} selectedOptions = {"disable"} value = {this.state.newUser.skillOptions} handleChangeEvent = {this.handleSkillsCheckBox} / >

RamTeja 22.12.2018 18:06

все же я сталкиваюсь с той же проблемой.

RamTeja 22.12.2018 18:06

Спасибо! Можете ли вы отредактировать свой вопрос, включив в него эту информацию? Я обновлю свой ответ, так как в вашем образце есть исправления для меня.

stealththeninja 22.12.2018 18:08
Поведение ключевого слова "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
11
162
3

Ответы 3

Комментарий к вопросу ссылается на руководство, показывающий, как построить форму и ее подкомпоненты. Несколько компонентов включают примеры того, как передать props, но этого нет в <Checkbox/>.

Чтобы восполнить этот пробел, вот пример того, как вы можете рассчитывать на использование <Checkbox/>. Я не читал статью полностью, поэтому надеюсь, что вы поможете исправить любые ошибки, которые я здесь допустил, и это поможет вам начать собственное развитие.

<Checkbox
       title = {'Skills'}
       name = {'skills'}
       options = {this.state.skills} <!-- array of skills or empty array -->
       selectedOptions = {this.state.newUser.skills} <!-- array of skills or empty array -->
       handleChangeEvent = {this.handleInput}
/>

Приведенный выше пример кода не предназначен для копирования и вставки, а скорее является отправной точкой. То, что вы фактически передаете своему компоненту <Checkbox/>, зависит от того, что вы строите вокруг него.

stealththeninja 22.12.2018 18:16

Спасибо ... большое за терпение ... я понял

RamTeja 22.12.2018 18:38

Вы также можете использовать простой запасной вариант, например.

const checkBox = props => {
  const { options, name, titlem, selectedOptions, handleChangeEvent } = props

  return (
    <div>
      <label for = {name} className = "form-label">
        {title}
      </label>
      <div className = "checkbox-group">
        {(options || []).map(option => {
          return (
            <label key = {option}>
              <input
                className = "form-checkbox"
                id = {name}
                name = {name}
                onChange = {handleChangeEvent}
                value = {option}
                checked = {selectedOptions.indexOf(option) > -1}
                type = "checkbox"
              />{" "}
              {option}
            </label>
          );
        })}
      </div>
    </div>
  );
};
const checkBox = ({  options, name, title, selectedOptions, handleChangeEvent }) => {
      return (
        <div>
          <label htmlFor = {name} className='form-label'>
            {title}
          </label>
          <div className='checkbox-group'>
            {
           options && options.map(option => {
                return (
                  <label key = {option}>
                    <input
                      className='form-checkbox'
                      id = {name}
                      name = {name}
                      onChange = {handleChangeEvent}
                      value = {option}
                      checked = {selectedOptions.indexOf(option) > -1}
                      type='checkbox'
                    />{' '}
                    {option}
                  </label>
                )
              })
            }
          </div>
        </div>
      )
    }

Лучше предоставить более подробную информацию о коде в своем ответе.

Reza sh 11.01.2021 14:12

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