React .map() 不显示数据
2017-08-15
2238
我编写了与此非常相似的代码,并且它已成功运行,但是,我什么也没得到。在 console.log data 中,我看到了正确的对象数组,但在 console.log user 中,我什么也没得到,并且 User 组件未被调用。当我为 User 插入不同的静态值时,它就可以正常工作了
import React, { Component } from 'react';
import User from './user';
export default class UserResults extends Component {
render() {
let data = this.props.data;
let results;
if (data) {
console.log(data);
results = data.map(user => {
console.log(user);
return (
<User key={user.name}
stream={user.stream}
name={user.name}
logo={user.logo}
url={user.url} />
);
})
}
return (
<tbody className="UserResults">
{results}
</tbody>
);
}
}
这是我记录数据时显示的内容
0:{stream: null, name: "storbeck", logo: null, url: "https://api.twitch.tv/kraken/channels/storbeck"}
1:{stream: null, name: "FreeCodeCamp", logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/fre…decamp-profile_image-d9514f2df0962329-300x300.png", url: "https://api.twitch.tv/kraken/channels/freecodecamp"}
2:{stream: null, name: "OgamingSC2", logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/oga…ngsc2-profile_image-9021dccf9399929e-300x300.jpeg", url: "https://api.twitch.tv/kraken/channels/OgamingSC2"}
3:{stream: null, name: "habathcx", logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/habathcx-profile_image-d75385dbe4f42a66-300x300.jpeg", url: "https://api.twitch.tv/kraken/channels/habathcx"}
4:{stream: null, name: "RobotCaleb", logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/robotcaleb-profile_image-9422645f2f0f093c-300x300.png", url: "https://api.twitch.tv/kraken/channels/RobotCaleb"}
5:{stream: {…}, name: "ESL_SC2", logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/esl_sc2-profile_image-d6db9488cec97125-300x300.jpeg", url: "https://api.twitch.tv/kraken/channels/ESL_SC2"}
6:{stream: null, name: "cretetion", logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/cretetion-profile_image-12bae34d9765f222-300x300.jpeg", url: "https://api.twitch.tv/kraken/channels/cretetion"}
7:{stream: null, name: "noobs2ninjas", logo: "https://static-cdn.jtvnw.net/jtv_user_pictures/noo…ninjas-profile_image-34707f847a73d934-300x300.png", url: "https://api.twitch.tv/kraken/channels/noobs2ninjas"}
如果您也需要查看 user.js 的代码,这里是它
import React, { Component } from 'react';
export default class User extends Component {
render() {
let props = this.props;
console.log(props);
let message;
if (props.stream !== null) {
message = 'Online';
} else {
message = 'User is offline';
}
return (
<tr className="User">
<td><img src={props.logo} alt={props.name} /></td>
<td><a href={props.url}>{props.name}</a></td>
<td>{message}</td>
</tr>
);
}
}
2个回答
找到了答案。我在执行 API 调用时异步设置状态,因此数据的长度实际上为 0,尽管它不为空。我移动了 setState 调用并获得了所需的输出。
Aaron
2017-08-15
尝试一次添加一个 prop。如果您可以在
map
中
console.log(user.name)
,请尝试仅将其添加到
<User />
,取消注释您在组件中使用它们的位置,以便您尽可能从基础开始,然后逐步使用所有 prop。然后,您将弄清楚它在哪里出现问题。
如果出现问题,您没有收到错误,这非常奇怪。
Erik Hellman
2017-08-15