2

我正在构建一个自动幻灯片,每 5 秒切换一次图像。当新图像进入时,我使用 ReactCSSTransitionGroup 创建淡入方法。问题是当新图像淡入时,旧图像仍然存在并且两个图像都显示在屏幕上,旧图像不会离开直到新图像完全显示。我该如何解决?

这是我的幻灯片组件来显示图像:

import React from 'react';    
const Slide = ({picture}) => {
  if(!picture){
    return <div>Loading...</div>;
  }    
  return (
      <div className='row'>
        <img src={picture.url} alt={picture.title} />
      </div>
  );
};    
export default Slide;

这是我称之为 Slide 组件的父组件的一部分

  <ReactCSSTransitionGroup {...transitionOptions}>
    <Slide key={this.props.active} picture={this.props.active}/>
  </ReactCSSTransitionGroup>

这是在父级的 render() 方法中设置转换的选项

const transitionOptions = {
  transitionName: "fade",
  transitionEnterTimeout: 500,
  transitionLeaveTimeout: 500
}

这就是风格

.fade-enter{
  opacity: 0;
}
.fade-enter-active{
  opacity: 1;
  transition: 0.5s ease-in all;
}

基本上在父组件中,我有一个 setInterval 方法,它每 5 秒更改一次活动图像。那么如何在新图像开始褪色时让旧图像消失,这样它就不会改变我的页面?谢谢

4

1 回答 1

5

transitionLeave通过将属性设置为 来移除退出动画false,并完全移除该transitionLeaveTimeout属性。您已配置为使用 500 毫秒计时器进行ReactCSSTransitionGroup动画处理。enterleave

Slide在我看来,如果退出淡出而进入淡入,则过渡会更好Slide。对于这种效果,您需要两个Slide元素通过绝对定位彼此重叠。这是一个例子:http ://codepen.io/yeahjohnnn/pen/rrobvR

于 2016-10-22T07:30:28.403 回答