Выпадающий список React Antd выбрасывается, если меню динамическое

Я пытаюсь получить раскрывающийся список Antd на основе массива, но он продолжает давать сбой с ошибкой: React.Children.only ожидает получения одного дочернего элемента React.

Я видел другие темы об этом, но я сбит с толку, потому что мое меню работает, если данные статичны: вот фрагмент

  var items = [
    {
      key: '0',
      label:  'item0',
    },
    {
      key: '1',
      label:  'item1',
    }
  ];
  
  var items2 = []
  for (let item of items) items2.push({key: items2.length.toString(), label: item.label})
  
  console.info(items, items2, JSON.stringify(items), JSON.stringify(items2), JSON.stringify(items) === JSON.stringify(items2) )
  
  return (<>
    <Dropdown menu = {{ items }} trigger = {['click']}>
      <a onClick = {(e) => e.preventDefault()}>
        {name} <DownOutlined />
      </a>
    </Dropdown>
    <Dropdown menu = {{ items2 }} trigger = {['click']}>
      <a onClick = {(e) => e.preventDefault()}>
        {name} <DownOutlined />
      </a>
    </Dropdown>
  </>)
  

Как и ожидалось, items и items2 одинаковы по конструкции, а JSON.stringify(items) === JSON.stringify(items2) ) равно true

Тем не менее, щелчок по первому раскрывающемуся списку с элементами работает, а щелчок по второму выбрасывает.

Как я могу решить эту проблему?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
62
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

заменить menu = {{ items2 }} на menu = {{ items: items2 }}
атрибут меню должен иметь свойство items
Я надеюсь, что это поможет

Вы должны написать это так

<Dropdown menu = {{ items: items2 }} trigger = {["click"]}>

введите здесь описание изображения

введите здесь описание изображения

Ответ принят как подходящий

первый работает только по стечению обстоятельств! потому что имя variable - это предметы, и поскольку вы должны указать имя property, которое также является предметами, оно работает, поэтому

{{items}}

на самом деле:

{{items:items}}

для второго вы должны упомянуть property предметы, потому что у вас есть другое имя variable

{{items:items2}}

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