javascript - 如何为动态渲染中包含的 React 组件设置动画
问题描述
我正在开发一个允许我搜索我的数据库的反应组件。我有更高级的搜索条件,我想在面板中包含这些条件。为此,我有一个名为“单击我”的按钮,单击该按钮会打开一个抽屉以显示更多信息。当单击单击我按钮时,我将状态布尔值更新为 true,这会导致面板重新呈现并显示抽屉。我的问题是,如何为这个基于状态变化动态呈现的 jsx 设置动画?我希望抽屉具有滑出效果的动画。我的问题是,由于这个 div 在 state 等于 true 之前不在 DOM 中,所以动画似乎不起作用......
这是我的面板的 GIF:
这是我试图让它工作的一些代码:
function useDelayUnmount(isMounted, delayTime) {
const [shouldRender, setShouldRender] = useState(false);
useEffect(() => {
let timeoutId;
if (isMounted && !shouldRender) {
setShouldRender(true);
} else if (!isMounted && shouldRender) {
timeoutId = setTimeout(() => setShouldRender(false), delayTime);
}
return () => clearTimeout(timeoutId);
}, [isMounted, delayTime, shouldRender]);
return shouldRender;
}
// render
{sidebarClicked && shouldRenderAdditionalInfo && (
<div
className="DevSearch__additional-search-criteria"
style={sidebarClicked ? mountedStyle : unmountedStyle}
>
Additional Search Criteria
</div>
)}
这是一个代码沙箱的链接,可以查看我的代码: 我的代码沙箱
解决方案
推荐阅读
- reactjs - 如何在 html 中从下一个/头移动到头
- javascript - 我可以使用 JavaScript/jQuery 在每个图像更改上添加动画吗?
- java - 我的jsp网站上的Mysql错误“列'USER_NAME'不能为空”
- msbuild - Azure DevOps 中的 Visual Studio 构建任务失败 - 我的 .Net Framework 引用的项目是 .Net Core?
- docker - 在 Windows 上构建的 Raspberry 上运行 Docker 映像
- java - 具有 N 次元组的 jOOQ "IN" 谓词
- html - 如何将表单数据发送到同一网页中的 iframe src
- joomla - 找不到请求的页面
- bash - 检查终端中的特定网站是否已启动?
- oauth - 为什么 .eot 网络字体没有从 Tomcat 服务器下载到 IE 11?