Сопоставление свойств с массивом в React

Поэтому я хотел бы перебрать некоторые реквизиты, которые передаются моему компоненту реакции, и построить динамический набор элементов html на основе количества ссылок, которые передаются реквизитами. в приведенном ниже примере будет отображена только первая ссылка.

import React from "react";
import ReactDOM from "react-dom";

const Links = (props) => {
   return (
      <div>
        <p>{props.link.link1}</p>
      </div>
    )
  }

export default Links;

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

"links": {
      "link1": "https://www.google.com",
      "link2": "https://www.google.com",
      "link3": "https://www.google.com",
      "link4": "https://www.google.com",
      "link5": "https://www.google.com",
      "link6": "https://www.google.com"
 }

Я пробовал что-то вроде приведенного ниже, но просто не могу заставить его работать. мне нужно сделать мой класс компонентов реакции на основе? и ввести метод конструктора / рендеринга, чтобы сделать это правильно?

const buildLinks = this.props.data.map(release => {
    render (
        /// p tags + props go here
    )
})

вы проверили документы? reactjs.org/docs/lists-and-keys.html#basic-list-component

azium 01.05.2018 17:33

Я думаю, что React Doc очень ясно описывает вашу проблему. просто проверьте это.

Nahid Hasan 01.05.2018 17:34
Поведение ключевого слова "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
2
604
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Используйте Object.keys() для преобразования объекта в массив и создайте JSX с помощью Array.map():

const props = {
  "links": {
    "link1": "https://www.google.com",
    "link2": "https://www.yahoo.com",
    "link3": "https://www.facebook.com",
    "link4": "https://www.twitter.com",
    "link5": "https://www.instagram.com",
    "link6": "https://www.gmail.com"
  }
};

const Links = ({ links }) => {
   return (
      <div>
        {
          Object.keys(links).map((link) => (
            <p key = {link}>{ links[link] }</p>
          ))
        }
      </div>
    )
  }

ReactDOM.render(
  <Links {...props} />,
  demo
);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id = "demo"></div>

кстати ... как мне добавить условие к этому синтаксису, чтобы сказать, отображать другое изображение в зависимости от того, что было в списке ссылок?

Timmy Lee 01.05.2018 18:32

Это совершенно новый вопрос, Тимми. Вы должны создать новый вопрос, который показывает текущий код и список изображений, и спросить, как их объединить.

Ori Drori 01.05.2018 18:35
var link = {
  "links": {
    "link1": "https://www.google.com",
    "link2": "https://www.yahoo.com",
    "link3": "https://www.facebook.com",
    "link4": "https://www.twitter.com",
    "link5": "https://www.instagram.com",
    "link6": "https://www.gmail.com"
  }
}

var newlink = Object.values(link)

console.info(Object.values(newlink[0]))

тогда вы можете нанести на них карту. как ты хочешь.

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