因此,正如标题所说:我们如何在渲染组件之前调度redux动作?
我有一个特定的情况,我需要在组件渲染之前清除一些共享状态块(在这种情况下显示“loading ...”),这是通过调度redux动作完成的。
现在,如果我用useEffect
发送它,我会看到显示的第一个陈旧/旧数据的闪烁,然后显示“正在加载...”。
到目前为止,我看到了两种解决方法:
useLayoutEffect
- 我喜欢它但不确定它是否是一个好习惯我可能会创建自定义的Fetcher
钩子,但是没有把它带回到特殊/包装地狱的领域?
我只是想在第一次渲染之前做一些事情。
useEffect
和useLayoutEffect
之间的区别在于后者在初始渲染后同步执行:
签名与useEffect相同,但在所有DOM突变后它会同步触发。使用它从DOM读取布局并同步重新渲染。在浏览器有机会绘制之前,将在useLayoutEffect内部计划的更新将同步刷新。
如果闪烁是useEffect
唯一的问题,它会随着useLayoutEffect
消失,那么应该使用后者。