Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用React/Redux滑开面板0.3秒或0.6秒后,我们';我已经有两个行动来处理了?_Reactjs_Redux_Css Transitions_Reactcsstransitiongroup - Fatal编程技术网

Reactjs 使用React/Redux滑开面板0.3秒或0.6秒后,我们';我已经有两个行动来处理了?

Reactjs 使用React/Redux滑开面板0.3秒或0.6秒后,我们';我已经有两个行动来处理了?,reactjs,redux,css-transitions,reactcsstransitiongroup,Reactjs,Redux,Css Transitions,Reactcsstransitiongroup,如果React面板在渲染过程中计算量较大,并且我们希望在主页同时渲染某些内容时使其消失,那么它将通过将面板滑动到页面的左侧或右侧并将其隐藏来加速页面更新。(页面在面板和主页面中不断进行数据可视化) 但是,如果由于状态IsMainPageConstantlyUpdate为true而面板突然变为空白或变为width:0,则会很奇怪,并且面板有以下行: if (isMainPageConstantlyUpdating) return <div></div>; 因此,当

如果React面板在渲染过程中计算量较大,并且我们希望在主页同时渲染某些内容时使其消失,那么它将通过将面板滑动到页面的左侧或右侧并将其隐藏来加速页面更新。(页面在面板和主页面中不断进行数据可视化)

但是,如果由于状态
IsMainPageConstantlyUpdate
true
而面板突然变为空白或变为
width:0
,则会很奇怪,并且面板有以下行:

    if (isMainPageConstantlyUpdating) return <div></div>;

因此,当
isMainPageConstantlyUpdating
为false时,数组元素获取时间戳,并将重新进行计算,但当
isMainPageConstantlyUpdating
为true时,它将继续为true,因此不会调用函数来更新内容,但这也使它变得相当复杂。

我正在尝试,似乎有一种解决方案是,我们不必管理0.3秒后的“微观状态”

我们可以简单地使用一个本地州,例如

const [isNotToRender, setIsNotToRender] = useState(false);
因此,对于任何动画结尾,我们都有一个侦听器,然后将
isnotorender
设置为true,如果为true,则不返回任何复杂的渲染,只要
返回即可


我知道官方的Redux示例文档基本上发送了所有内容。这几乎只是为了最终完成一些事情。我认为这是在发送一些东西,然后使用
useffect(fn,[someState])
启动一些行为。这可能是一种方式,但有时我的风格更像是:在需要做的时候做一些事情,然后只发送更改与应用程序的数据或重要状态更相关的内容。

这里没有足够的内容来帮助您。查看react suspense-它可以优雅地处理布局更改并在不同时间动态加载数据。您还可以在悬念中创建一个加载组件,该组件看起来与您的数据类似,如FB-下面是一个tailwind css示例。您还可以使用useEffect钩子来侦听更新状态,并在加载时呈现加载组件。您还可以设置加载状态,以暂停/重新启动useEffectHook中的侧栏加载。有很多方法可以做到这一点,但我们需要更多的信息。我的直觉告诉我“不,你不需要发送两个事件”。我在modals和
setTimeout
中做了类似的事情,其中组件内状态处理滑动,上下文处理加载/卸载组件(尽管它们比我认为您描述的要简单得多)。不过我同意@Sean W的观点,这里没有足够的帮助。我认为需要有两个动作(和两个状态),因为有一个动作用于
的持续更新
,因此其他一些组件需要完成它们的工作,而
isMainPageConstantlyUpdatingForFullWindow
则用于其他组件适当地执行此任务。。。我可以通过延迟0.3秒或0.6秒来解决这个问题,只需发送
isMainPageConstantlyUpdating
,但是一些组件可以在0.3秒或0.6秒完成一些任务late@SeanW看来懒惰和悬念可以胜任这项工作。。。但是用它们来处理只差0.3秒或0.6秒的事情,似乎有点过分了。。。我所希望的可能是,如果一个组件可以说,
if(isMainPageConstantlyUpdating&!isMainPageConstantlyUpdatingForFullWindow){freezeTheRendering()}
,这样就可以完成任务了。但是似乎没有简单的方法来执行
冻结渲染()
当它们彼此独立加载时,我会使用漂亮的占位符让它们加载,以防止加载期间和加载后布局发生变化。这样,如果第一个查询挂起,另一个查询就不会受到影响。如果您真的想要,您可以对这两个组件使用相同的状态,但我们需要看一个示例来帮助您。
const [isNotToRender, setIsNotToRender] = useState(false);