【问题标题】:React - Load/Show current user posts onlyReact - 仅加载/显示当前用户帖子
【发布时间】:2021-08-04 13:35:41
【问题描述】:

我想在 React 中返回,显示每个用户登录时的所有帖子。

问题是现在,我的代码加载所有用户的所有帖子,只显示当前登录用户的帖子,但其他帖子占用屏幕空间。我想删除/不加载未登录的用户帖子。

我认为问题是现在我在 JSX 中进行验证,但我必须在加载帖子的 map() 函数上进行验证,但我自己找不到解决方案。

这是我目前的代码:

  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>
    </>
  )

这是输出示例:

有人可以帮忙吗?非常感谢。

【问题讨论】:

    标签: javascript reactjs web frontend jsx


    【解决方案1】:

    在这里,您正在渲染 Grid,然后检查条件,以便您的 Grid 占用该空间。

    你只需要在渲染Grid之前检查你的状态一行

    尝试如下:

          {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>
              )
          )}
    

    【讨论】:

    • 哇,它有效!我真的很感激,非常感谢。现在我只需要纠正一个与我的帖子重复的小错误。再次感谢!
    • 我很乐意提供帮助
    • 对不起 Priyank,关于代码的一个问题:如果没有来自一个用户的帖子,那么用户所做的第一个帖子会在屏幕上重复,并且控制台显示以下错误:遇到两个孩子相同的密钥 .Keys 应该是唯一的,以便组件在更新时保持其身份。非唯一键可能会导致子项被复制和/或省略。如果我刷新页面,重复的帖子就会从屏幕上删除,只出现正确的帖子。然后对于以下帖子,代码可以完美运行。你知道我该如何控制吗?
    • 这个问题只发生在用户添加帖子时,所以可能在帖子数组中存储重复?你可以通过控制台日志检查posts数组吗?
    • post 数组与具有相同键的两个元素重复,但实际上重复的元素不会加载到数据库中,如果我刷新页面,重复的元素会从数组中删除。也许这是我的代码的状态问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多