【问题标题】:use another useeffect result in another使用另一个使用效果导致另一个
【发布时间】:2021-04-29 13:23:52
【问题描述】:

这里是新的 react 开发人员,这里我有两个 useEffect,其中一个(第一个)是一个包含“名称”的对象,我想在我的第二个 useEffect 中使用它。第二个 useEffect 包含一个对象数组,这些对象数组具有“billingName”和“driverName”,其中一些具有相同的值,例如 driverName:“james”。我想要做的是在我的第二个useEffect中检查第一个useEffect中的'name'是否与'driverName'相同,然后才执行'setOrders(res); setRenderedData(res);'

我的错误信息:类型上不存在属性“driverName”...

我的对象:{ id: "98s7faf", isAdmin:是的, 名称:“詹姆斯”}

我的数组:[{billingName: "trump",driverName: "james"}, {billingName: "putin",driverName: "alex"}, {…}, {…}, {…}]

我的代码:

 const [driver, setDriver] = useState<User>();

useEffect(() => {
    
    api.userApi
      .apiUserGet()
      .then((res: React.SetStateAction<User | undefined>) => {
        console.log(res);
        setDriver(res);
      });
  }, [api.userApi]);


 useEffect(() => {
    
    api.caApi
      .apiCaGet(request)
      .then((res: React.SetStateAction<CaDto[] | undefined>) => {
        if (driver?.name == res?.driverName) {
          setOrders(res);
          setRenderedData(res);
          console.log(res);
        }
      });
  }, [api.caApi]);

【问题讨论】:

  • 您可以在then of api.userApi 中调用api.caApi
  • 错误似乎来自您的 API 结果,而不是来自您的driver 状态。
  • 不,它的原因是比较数组和字符串

标签: javascript html reactjs typescript use-effect


【解决方案1】:

你可以在api.userApi的then中调用api.caApi,

 useEffect(() => {
  api.userApi.apiUserGet().then((res1?: User ) => {
  setDriver(res1);
  return api.caApi.apiCaGet(request).then((res?: CaDto[]) 
  => {
    if (res.some(({ driverName }) => driverName === res1?.name)) {
      setOrders(res);
      setRenderedData(res);
      console.log(res);
    }
  });
});
}, [api.caApi, api.userApi]);

【讨论】:

猜你喜欢
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多