You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中获取数据库用户列表时移除当前登录用户的方法

解决方案

首先修正初始状态的错误:你当前把users初始化为空字符串,会导致后续调用map方法时报错,应该初始化为空数组:

const [users, setUsers] = useState([]);

假设你已经获取到当前登录用户的ID(比如存在currentUserId变量中,可从localStorage、React上下文或状态管理工具中获取),以下是几种实现方式:

方式一:获取数据时直接过滤(推荐)

在接口返回数据后,先过滤掉当前登录用户再存入状态,后续渲染无需额外处理:

useEffect(() => {
  axios.get(`http://localhost:3000/api/v1/user/bulk?filter=${filter}`)
    .then(response => {
      // 过滤掉当前登录用户
      const filteredUsers = response.data.user.filter(user => user._id !== currentUserId);
      setUsers(filteredUsers);
    })
}, [filter, currentUserId]); // 记得把currentUserId加入依赖数组

方式二:渲染时过滤(适合需保留完整用户列表的场景)

如果需要在其他逻辑中用到完整的用户列表,可以在渲染阶段做过滤:

{users
  .filter(user => user._id !== currentUserId)
  .map(user => <User key={user._id} user={user} />)
}

用三元运算符实现(仅满足需求,不推荐)

如果一定要用三元运算符,可以在map内部判断,不符合条件则返回null:

{users.map(user => 
  user._id !== currentUserId ? <User key={user._id} user={user} /> : null
)}

注意:确保currentUserId的取值正确,且与用户列表中user._id的类型一致(比如同为字符串或数字),否则过滤逻辑会失效。

内容的提问来源于stack exchange,提问作者Yash Varma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:25:58