Javascript 反应-仅加载/显示当前用户帖子
我想在React中返回一条消息,显示每个用户登录时的所有帖子 问题是,现在,我的代码加载所有用户的所有帖子,只显示当前登录用户的帖子,但其他帖子占用屏幕空间。我想删除/不加载未登录的用户帖子 我认为问题在于,现在我在JSX中进行验证,但我必须在加载帖子的map()函数中进行验证,但我自己无法找到解决方案 这是我目前的代码:Javascript 反应-仅加载/显示当前用户帖子,javascript,reactjs,web,frontend,jsx,Javascript,Reactjs,Web,Frontend,Jsx,我想在React中返回一条消息,显示每个用户登录时的所有帖子 问题是,现在,我的代码加载所有用户的所有帖子,只显示当前登录用户的帖子,但其他帖子占用屏幕空间。我想删除/不加载未登录的用户帖子 我认为问题在于,现在我在JSX中进行验证,但我必须在加载帖子的map()函数中进行验证,但我自己无法找到解决方案 这是我目前的代码: const posts = useSelector((state) => state.posts) const classes = useStyles()
const posts = useSelector((state) => state.posts)
const classes = useStyles()
const user = JSON.parse(localStorage.getItem('profile'))
return (
<>
<Grid className={classes.container} container alignItems='stretch' spacing={3}>
{
posts.map((post) => (
<Grid key={post._id} item xs={12} sm={4}>
{(user?.result?.googleId === post?.creator || user?.result?._id === post?.creator) && (
<Post post={post} setCurrentId={setCurrentId}/>
)}
</Grid>
))
}
</Grid>
</>
)
const posts=useSelector((state)=>state.posts)
常量类=useStyles()
const user=JSON.parse(localStorage.getItem('profile'))
返回(
{
posts.map((post)=>(
{(用户?.result?.googleId==post?.creator | |用户?.result?_id==post?.creator)&&(
)}
))
}
)
这是输出示例:
有人能帮忙吗?非常感谢。这里您正在渲染
网格
,然后检查条件,以便网格
占用该空间
在渲染网格之前,只需检查一行即可
尝试以下方法:
{posts.map(
post =>
(user?.result?.googleId === post?.creator ||
user?.result?._id === post?.creator) && (
<Grid key={post._id} item xs={12} sm={4}>
<Post post={post} setCurrentId={setCurrentId} />
</Grid>
)
)}
{posts.map(
post=>
(用户?.result?.googleId==帖子?.creator)||
用户?.result?_id==post?.creator)和(
)
)}
哇,真管用!我真的很感激,非常感谢。现在我只需要纠正一个重复我文章的小错误。再次感谢!我很高兴为您提供帮助抱歉,Priyank,关于代码的一个问题:如果没有来自一个用户的帖子,那么该用户的第一篇帖子会在屏幕上复制,控制台会显示以下错误:遇到两个具有相同密钥的子项。密钥应该是唯一的,以便组件在更新过程中保持其标识。非唯一键可能会导致复制和/或忽略子项。如果我刷新页面,重复的帖子就会从屏幕上消失,只有正确的帖子才会出现。然后,对于下面的文章,代码可以完美地工作。你们知道我该如何控制吗?这个问题只会在用户添加帖子时发生,所以可能在帖子数组中它存储的是重复的?您可以通过控制台日志posts
array进行检查吗?post数组使用两个具有相同键的元素进行复制,但实际上复制的元素不会加载到数据库中,如果我刷新页面,复制的元素将从数组中消除。也许这是我代码的状态问题?