MY conditional应该显示用户创建的任何视频,否则它会返回创建视频的提示。 if部分对有视频的用户有效,而my else if部分对没有视频的用户不返回。我想念什么?
const UserPage = props => {
const { username } = useParams();
useEffect(() => {
props.getUserVideos(localStorage.getItem("token"), username);
}, [username]);
let greeting;
if (localStorage.getItem("username") === username) {
greeting = `Welcome ${username}`;
console.log("Welcome");
} else {
greeting = `${username} Videos`;
console.log(username);
}
//this if statement will greet a user with a list of their videos, otherwise it will send a prompt to create a video
return (
<>
<Container>
<h1>{greeting}</h1>
<div style={videoListContainer}>
<div style={VideoThumbsContainer}>
{props.userVideos && props.userVideos ? (
props.userVideos.map(video => {
return (
<div key={video.id}>
<h3>{video.video_title}</h3>
<Link to={`/videos/${video.id}`}>
<Thumbnail video={video} />
</Link>
</div>
);
})
) : (
<p>
Looks like you haven't created any videos yet, lets {""}
<Link to="/create">create some videos!</Link>
</p>
)}
</div>
</div>
</Container>
</>
);
};
const mapStateToProps = state => ({
userVideos: state.userVideos,
getUserVideosStart: state.getUserVideosStart,
getUserVideosSuccess: state.getUserVideosSuccess,
getUserVideosError: state.getUserVideosError
});
export default connect(
mapStateToProps,
{ getUserVideos }
)(withRouter(UserPage));
这似乎很奇怪:
props.userVideos && props.userVideos
您要检查同一件事两次。这些中的任何一个在任何时候都不会是“真实的”,而另一个则不是。也许您打算检查数组的[[length?:
props.userVideos && props.userVideos.length > 0
localStorage.getItem("username") === username
听起来像“现有用户”逻辑,但是在您的代码中显示为“欢迎”消息。我猜是您的数据结构化方式,getItem(“ username”)永远不会等于用户名]]