在使用反应钩子渲染之前调度redux动作

问题描述 投票:2回答:1

因此,正如标题所说:我们如何在渲染组件之前调度redux动作?

我有一个特定的情况,我需要在组件渲染之前清除一些共享状态块(在这种情况下显示“loading ...”),这是通过调度redux动作完成的。

现在,如果我用useEffect发送它,我会看到显示的第一个陈旧/旧数据的闪烁,然后显示“正在加载...”。

到目前为止,我看到了两种解决方法:

  1. useLayoutEffect - 我喜欢它但不确定它是否是一个好习惯
  2. 重新定义redux模型 - 我想避免的那个加上它听起来有点奇怪

我可能会创建自定义的Fetcher钩子,但是没有把它带回到特殊/包装地狱的领域?

我只是想在第一次渲染之前做一些事情。

reactjs react-hooks
1个回答
1
投票

useEffectuseLayoutEffect之间的区别在于后者在初始渲染后同步执行:

签名与useEffect相同,但在所有DOM突变后它会同步触发。使用它从DOM读取布局并同步重新渲染。在浏览器有机会绘制之前,将在useLayoutEffect内部计划的更新将同步刷新。

如果闪烁是useEffect唯一的问题,它会随着useLayoutEffect消失,那么应该使用后者。

© www.soinside.com 2019 - 2024. All rights reserved.