при использовании реакции, поэтому вам нужно использовать преимущества, которые предоставляет вам реакция, вам следует разделить код и сделать его многократно используемым.
во-вторых: для получения всего нескольких чисел из связанных постов из большого массивавам не нужно делать цикл, вы можете просто объявить переменную и сохранить в ней количество постов, которые вам нужно сохранить
import React, {Component} from 'react';
import Post from './post/post'
class RelatedPosts extends Component{
state = {
realted: [],
}
componentDidMount(){
const url = `/artist/${props.artistId}/related`;
fetch(url)
.then(response=>{
const relatedPosts = response.data.slice(0 ,4),
latestRelatedPosts = relatedPosts.map(post=>{
return {
post
}
})
;
this.setState({
realted: latestRelatedPosts
});
}).catch(error=>{
console.log(error)
})
}
render() {
let relatedPosts = this.state.realted.map(realtedPost=>{
return (
<Post post={realtedPost}/>
);
});
return (
<section className="Posts">
<p>Related artists</p>
{relatedPosts}
</section>
);
}
}
export default RelatedPosts;
здесь я создал запрос в componentDidMount Lifecycle, потому что он вызывается сразу после вставки компонента в дерево, и вы можете найти дополнительную информацию здесь
и здесь я создам новый компонент, чтобы позже упростить код для обслуживания, если вы захотите что-то изменить позже, и я передам ему данные, полученные из ответа на мой запрос
import React from 'react';
const post = (props) => (
<article className="relatedPost">
<h1>Name: {props.post.Name}</h1>
<h1>Fans: {props.post.numFans}</h1>
<img src={img} alt={name} />
</article>
);
export default post