已传递ID但未显示正确数据:活跃用户画廊功能异常
问题分析与修复方案
你的活跃用户画廊功能异常的核心原因是GalleriesApp中的useEffect条件逻辑存在覆盖问题,导致请求被重置为获取全部画廊。
具体问题点:
- 条件分支不互斥:原代码中
if(my_id)和if(id)/else是独立分支,进入/my-galleries时,my_id存在但id为undefined,第一个分支执行后,else分支会立刻执行,将用户ID重置为null并重新请求全部画廊,直接覆盖了之前的活跃用户画廊请求。 - 错误的状态设置:在
my_id分支中,你错误地将id(此时为undefined)传给setSearchUserId,导致搜索状态中的用户ID不正确。
修复代码:
修改GalleriesApp中的useEffect逻辑,使用互斥的else if结构,并修正状态设置:
useEffect(() => { if(my_id){ // 将setSearchUserId的参数改为my_id,而非id dispatch(setSearchUserId(my_id)); dispatch(getGalleries({ page: 1, user_id: my_id, term: null})); } else if(id){ dispatch(setSearchUserId(id)); dispatch(getGalleries({ page: 1, user_id: id, term: null})); } else { dispatch(setSearchUserId(null)); dispatch(getGalleries({ page: 1, user_id: null, term: null})); } }, [my_id, id, dispatch]);
额外优化建议:
- 可以移除
useEffect(() => { dispatch(getActiveUser(id)) },[id])逻辑,因为/my-galleries路径下id不存在,该dispatch无意义;而/authors/:id路径下,该逻辑是获取作者信息而非活跃用户,存在逻辑混淆。 - 后续可验证
handleSearch函数,确保my_id存在时,搜索逻辑能正确关联当前用户。
内容的提问来源于stack exchange,提问作者mnPrc
相关产品推荐
相关产品推荐

