【发布时间】:2021-01-02 20:27:36
【问题描述】:
我有一个使用 react 和 react 路由器制作的聊天应用程序,我使用 react 过渡组在聊天之间制作动画,但问题是我在聊天中有图片,我想在用户点击它们时将它们显示给用户并且还想用一条路线来做它,并像在任何聊天应用程序中一样对其进行动画处理,但作为聊天的父路线会产生动画效果。
就像当路线从"/chat/:chatID" 更改为"/chat/:chatID/image" 时,它会发出动画我看到了很多解决方案,但没有一个对我有用,我真的很沮丧和愤怒,我不明白为什么要做出反应路由器的创建者没有给我们一个选项,让我们可以在需要时为组件制作动画。
聊天组件Route的代码如下:
<TransitionGroup component={null}>
<CSSTransition
timeout={300}
classNames="page"
key={!location.pathname.includes("/image") ? location.pathname : null}
>
<Route path={`${path}/room/:roomID`} location={location}>
<chat
unreadMessages={unreadMessages}
animState={state}
imagePreview={imagePreview}
setImagePreview={setImagePreview}
/>
</Route>
</CSSTransition>
</TransitionGroup>
这是聊天组件内部的图片预览路由的代码:
<TransitionGroup component={null}>
<CSSTransition
timeout={300}
classNames="page"
key={location.pathname}
>
<Route path={path + "/image"} location={location}>
<ImagePreview
setImagePreview={setImagePreview}
imagePreview={imagePreview}
path={path}
animState={animState}
/>
</Route>
</CSSTransition>
</TransitionGroup>
如您所见,我访问 location.pathname 并检查它是否具有图像路由,如果有,我会将键设置为 null 但是组件仍然动画,我可以看到它,它只动画出来但不在我里面希望组件在我转到 /image 时不设置动画,并且图像会以动画形式呈现。
此外,当我退出应该向用户显示图像的图像预览组件时,聊天组件仅在没有动画的情况下进行动画处理。 所以请帮助我,我真的厌倦了反应路由器!!!
【问题讨论】:
标签: javascript reactjs react-router react-transition-group