#arrays #reactjs #options #variant
Вопрос:
Добрый день, я новичок в react, и мне нужна помощь.
- Я просто пытаюсь сопоставить данные из api с намерением создать параметры для выбора продукта.
- Я могу это сделать, если данные api для конкретной концепции (например, bluetooth, цвет, вес) имеют простой формат массива, такой как:
"bluetooth":["4.0","A2DP","LE"]
Затем с помощью следующего кода отображаются параметры для выбора в селектореlt;OptionsCss onChange={(e) =gt; setSize(e.target.value)}gt; {product.bluetooth?.map((s) =gt; ( lt;FieldCss key={s}gt;{s}lt;/FieldCssgt; ))}
- Однако с концепцией под названием хранилище я не могу получить значения параметров продукта для выбора. Здесь структура массива выглядит следующим образом :
"storages":[{"code":2000,"name":"16 GB"},{"code":2001,"name":"32 GB"}]
Здесь мне просто нужны значения, например, 16 ГБ и 32 ГБ. Таким образом, сопоставление api по предыдущему способу дает мне пустые варианты выбора.
- Тогда возникает вопрос: как я могу получить доступ к значениям имен из примера, упомянутого ранее ? и что я должен изменить по сравнению с предыдущим примером сопоставления?
Большое спасибо!
Ответ №1:
Когда вы сопоставляете массив, вы получаете по одному объекту за раз, а затем можете получить доступ к нужному свойству из объекта, используя storage.name
его .
obj.storages.map(storage =gt; storage.name)
Таким образом, в случае вашего компонента у вас будет
lt;OptionsCss onChange={(e) =gt; setSize(e.target.value)}gt; {product.storages?.map((s) =gt; ( lt;FieldCss key={s.name}gt;{s.name}lt;/FieldCssgt; ))} /gt;
Комментарии:
1. Спасибо, это действительно имеет смысл. К сожалению, я все еще не могу получить значения имени хранилища для селектора выбора
2. хм, вы уверены в том, что возвращает API, а также в названии
product
?