kala888 / tixwork

一个低码解决方案
Other
306 stars 64 forks source link

跳转问题 #23

Closed Go-Faram closed 3 years ago

Go-Faram commented 3 years ago

如果第一次进入的页面不是首页,一切都正常 如果第一次进入的页面是首页, 然后点击进去我的页面, 我的页面有useEffect, 去请求NavigationService.view('me')个人信息, 通过日志打印 显示先进入我的页面, 然后闪了一下,进入到首页然后又回到我的页面, 而且第一次进入首页和闪回去到首页的时候 首页的useEffect都执行了, 下面是从点击我的开始的日志, "到页面了"是在useEffect里面执行的, 一直没看出原因, 按理说就算跳回去也不应该第二次执行useEffect, 这种情况只有第一次进入的页面是首页会出现, 通过调试发现只有到其他页面去执行useEffect里面的NavigationService请求时才会出现, 而且是后端返回有xclass才会出现 image

image

kala888 commented 3 years ago

我感觉是异步调用的问题呢? 进入home,useEffect发送了一个home请求,后台返回home的xclass, 进入me,useEffect发送了一个me请求,后台返回me的xclass, 由于通过xclass会二次路由页面,两个都是异步的,所以感官上会乱跳,

首页和me,这种一级页面,一般不用useEffect,用DidShow配合Ajax就够了,原因是,用户每次看到这个页面的时候都期望刷新,并且不希望有任何页面跳转。

  const root = useSelector((state) => state.home);
  usePageTitle(root);
  useAjaxPullDown(root);

  useDidShow(() => NavigationService.ajax(ApiConfig.FooterHome));
Go-Faram commented 3 years ago

我感觉是异步调用的问题呢? 进入home,useEffect发送了一个home请求,后台返回home的xclass, 进入me,useEffect发送了一个me请求,后台返回me的xclass, 由于通过xclass会二次路由页面,两个都是异步的,所以感官上会乱跳,

首页和me,这种一级页面,一般不用useEffect,用DidShow配合Ajax就够了,原因是,用户每次看到这个页面的时候都期望刷新,并且不希望有任何页面跳转。

  const root = useSelector((state) => state.home);
  usePageTitle(root);
  useAjaxPullDown(root);

  useDidShow(() => NavigationService.ajax(ApiConfig.FooterHome));

不是异步的问题,我把home里面的useEffect注释掉了,一样会进入me页面来回跳

Go-Faram commented 3 years ago

我知道了, 我自己埋的坑