我有一个要求,我有几个组件,其中只有一个可以在特定时间点显示。组件具有不同的高度。
当用户单击当前显示的组件中的按钮时,我需要
- 向用户显示加载器
- 在后台渲染组件。
- 等到渲染的组件调用 onLoad 回调。
- 一旦 onLoad 回调被接收,隐藏加载器。
如下所示(此处的代码沙箱)
const [loading, setLoading] = useState(false);
const [activeElement, setActiveElement] = useState("Component1");
const onLoad = () => {
setLoading(false);
};
const onClick = () => {
setLoading(true);
setActiveElement(
activeElement === "Component1" ? "Component2" : "Component1"
);
};
return (
<div className="container">
<ViewWrapperHOC loading={loading}>
{activeElement === "Component1" ? (
<Component1 onLoad={onLoad} onClick={onClick} />
) : (
<Component2 onLoad={onLoad} onClick={onClick} />
)}
</ViewWrapperHOC>
</div>
);
我打算编写一个包装器组件(上面示例中的ViewWrapperHOC)来显示组件之间的转换并显示加载器。现在的问题是当我尝试制作动画时,因为我必须在 viewwrapper 中渲染进度条和子项,所以动画似乎非常有问题。
代码沙箱在这里
有人可以提出解决此问题的方法。我对任何替代动画或任何替代方法持开放态度,以任何形式的令人愉快的用户体验来实现这一点。提前致谢。