我的应用程序进行 API 调用并将 JSON 数组的每个元素转换为 React 组件。
我制作了这些子组件的数组,但它们不渲染。我如何强制他们渲染?我应该使用React.create()
然后调用render()
每个吗?
什么是适当的香草 React 设计模式?
var apiPosts = [];
class PostsItsContainer extends Component {
constructor(props){
super(props);
this.state = {}
}
componentDidMount(){
let uri = "some_API_endpoint" ;
if(uri){
fetch(uri)
.then(data => data.json())
.then(posts => {
posts.data.children.forEach(post => {
let imgUrl = post.data.hasOwnProperty('preview') ? post.data.preview.images[0].source.url : null;
let postData = [post.data.title, imgUrl, post.data.link];
apiPosts.push(<PostIt link={post.data.url} image={imgUrl} title={post.data.title} />);
});
}).catch(err => console.log(err)) }
}
render() {
return (
<div className="PostsItsContainer">
{apiPosts}
</div>
);
}
}
编辑:
我更改了标题,因为它非常通用。我真的在问为什么我的方法是糟糕的设计实践,不会给我正确的结果。
@Jayce444 告诉我原因,@Supra28 给出了一个很好的答案。我在这里发布@Jayce444 的评论以便于阅读:
完全可以将组件存储在变量或数组中,然后使用它。但是 store/props 应该保留用于渲染所需的基本数据,而不是整个预制组件。有几个原因,两个是:首先你会膨胀 state/props 这样做,其次你正在结合逻辑和视图功能。渲染组件所需的数据及其渲染的实际方式应该是松散耦合的,使您的组件更易于维护、修改和理解。这就像将 HTML 和 CSS 分离到单独的文件中一样,更容易:)