reactjs - ReactJs --- 向儿童发送道具导致儿童渲染出现问题。UI 渲染未发生“NewsLatest.js”
问题描述
一个组件 Landing.js 具有以下代码:
import React, { Component } from 'react'
import NewsSearch from '../NewsSearch/NewsSearch';
import NewsLatest from '../NewsLatest/NewsLatest';
import './Landing.css';
import axios from 'axios';
class Landing extends Component {
state={
newsList: []
}
componentDidMount(){
axios.get(`https://api.nytimes.com/svc/topstories/v2/home.json?api-key=7cK9FpOnC3zgoboP2CPGR3FcznEaYCJv`)
.then(res=> {
this.setState({newsList: res.data.results});
});
}
render() {
// console.log(this.state.newsList);
return (
<div className="landing text-center text-white">
<h1>News Portal</h1>
<div className="news-search">
<NewsSearch />
</div>
<div className="news-latest">
<NewsLatest newsList={this.state.newsList}/>
</div>
</div>
)
}
}
export default Landing;
当向 NewsLatest 组件发送 props 时,传递了 2 个值:首先是未定义的,然后当值到达时,然后是一个包含值的数组。
在“NewsLatest.js”文件中的代码是:::
import React, { Component } from 'react';
// import PropTypes from 'prop-types';
class NewsLatest extends Component {
newsTitle = (
this.props.newsList.map(item => (<h2>{item.title}</h2>))
)
render() {
console.log(this.props.newsList);
return (
<div>
<h2>News Latest....</h2>
{this.newsTitle}
</div>
);
}
}
export default NewsLatest;
UI 上没有呈现任何内容。我不知道如何处理。请提出一些建议。
解决方案
你面临的问题是你没有渲染任何东西(本身)因为newsTitle
没有返回任何东西。在您的代码中,newsTitle
是一个对象,但您需要将其设为函数。
修改NewsLatest
应该可以解决这个问题
import React, { Component } from 'react';
// import PropTypes from 'prop-types';
class NewsLatest extends Component {
newsTitle = () => (
this.props.newsList.map(item => (<h2>{item.title}</h2>))
)
render() {
console.log(this.props.newsList);
return (
<div>
<h2>News Latest....</h2>
{this.newsTitle()}
</div>
);
}
}
export default NewsLatest;
推荐阅读
- html - 选项卡内的 IFRAME URL 内容未加载
- c# - 运行方法结束而不关心异常
- flutter - Flutter:在 SizedBox 之前添加图标。为什么 Row 在 AppBar 之后消失了?
- javascript - 在 Jquery 的循环内移动 Div
- amazon-web-services - 为什么 AWS ec2 实例会降级?
- python - 运行泊坞窗图像给出 - 无法找到图像错误
- reactjs - 无法解决 'react-horizontal-scrolling-menu/build/scrollMenu'
- spring - 从数据库中读取@Transient 字段
- jboss7.x - JBoss EAP 7.2.8 中的 EJB2.1 查找问题
- javascript - 使用异步执行一个又一个功能并在反应中等待