【发布时间】:2021-08-05 22:23:57
【问题描述】:
我使用 React 转换组提出了以下代码:
const Transition = ({ elements, selectKey, render: Element, ...props }) => (
<TransitionGroup {...props}>
{elements.map((element) => (
<CSSTransition
key={selectKey(element)}
timeout={1000}
className="transition-slide"
>
<Element {...element} />
</CSSTransition>
))}
</TransitionGroup>
)
这里的关键部分是Transition 组件接收render 属性并应用一些转换来渲染它。
我期望它的工作方式:
<Transition render={(props) => <Toast {...props} />} />
但是这段代码并没有像我预期的那样工作:下一个元素的过渡中断前一个元素的过渡。
但是,这段代码可以正常工作:
const Element = (props) => <Toast {...props} />
// ...
<Transition render={Element} />
如何在不将所需的渲染道具放入单独的组件的情况下解决此问题?
代码沙盒:Example sandbox。沙盒提供了一个带有动画中断的不工作选项。要获得工作版本,您需要取消注释 /Toasts/index.js 文件中的第 16 行和第 30 行
附:我不能只使用
render={Toast},因为我需要使用({id}) => <Toast dismiss={() => {deleteToast(id)}} />。为了简化对问题的理解,我省略了这个细节。
【问题讨论】:
标签: reactjs react-transition-group