Поэтому я хотел бы перебрать некоторые реквизиты, которые передаются моему компоненту реакции, и построить динамический набор элементов 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
)
})
Я думаю, что React Doc очень ясно описывает вашу проблему. просто проверьте это.
Используйте 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>
кстати ... как мне добавить условие к этому синтаксису, чтобы сказать, отображать другое изображение в зависимости от того, что было в списке ссылок?
Это совершенно новый вопрос, Тимми. Вы должны создать новый вопрос, который показывает текущий код и список изображений, и спросить, как их объединить.
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]))
тогда вы можете нанести на них карту. как ты хочешь.
вы проверили документы? reactjs.org/docs/lists-and-keys.html#basic-list-component