首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >响应UseEffect,直到处理完道具才能运行

响应UseEffect,直到处理完道具才能运行
EN

Stack Overflow用户
提问于 2022-11-03 11:54:15
回答 1查看 31关注 0票数 0

我有一个设置用户化身的组件。它需要显示已登录的用户映像或工作人员。

工作人员是一个可选的通过的道具,登录用户配置文件图像来自于redux状态。

下面是基本版本。问题是,redux状态映像(登录用户)首先存在,然后才知道支柱工作人员是否在那里。

问题是,它首先填充已登录的用户映像(因为在redux状态下已经可用),然后更改为worker映像。我如何延迟检查,因此setState,直到我确定道具已经处理或没有?

代码语言:javascript
运行
复制
type IProps = {
  worker?: IUser;
};

const AvatarManager = ({ worker }: IProps) => {
  const [image, setImage] = useState<string>("");

  const profileImage = useSelector(getProfileImage);

  useEffect(() => {
    if (worker) {
      setImage(worker.profile_image);
      return;
    }
    if (profileImage) {
      setImage(profileImage);
    }
  }, [worker]);
}
EN

回答 1

Stack Overflow用户

发布于 2022-11-03 12:14:25

我已经传递了一个额外的布尔道具来检查我是需要设置worker映像还是登录用户映像。

代码语言:javascript
运行
复制
type IProps = {
  isWorkerImage?: boolean;
  worker?: IUser;
};

const AvatarManager = ({ isWorkerImage, worker }: IProps) => {
  const [image, setImage] = useState<string>("");

  const profileImage = useSelector(getProfileImage);

  useEffect(() => {
    if (worker) {
      setImage(worker.profile_image);
      return;
    }
    if (!isWorkerImage && profileImage) {
      setImage(profileImage);
    }
  }, [worker]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74302646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档