从Products
呈现的状态开始。
我想Products
在上面以动画退出并ProductDetailPhotos
在单击viewNavLink to={'/product-detail/' + variant.id}
中存在的时候出现Products
,但是,首先Products
上面被替换为 newProductDetailPhotos
和新的另一个ProductDetailPhotos
出现在它之后。
<TransitionGroup component="main" className="page-main">
<CSSTransition key={location.pathname} timeout={timeout} classNames="fade" appear>
<Switch location={location}>
<Route exact path={'/'} component={ () =>
<Products
productsArray={this.state.myProductsArray}
client={this.props.client}
/>
}/>
<Route path='/product-detail/:variantId' render={props =>
<ProductDetailPhotos
products={this.state.products}
client={this.props.client}
addVariantToCart={this.addVariantToCart}
{...props}
/>
}/>
<Route component={NotFoundPage} />
</Switch>
</CSSTransition>
</TransitionGroup>
我按时间序列解释实际如下:
Products DOM
被渲染- 单击导航链接到 /product-detail
Products DOM
立即更改为ProductDetailPhotos 1 DOM
淡出退出类,然后ProductDetailPhotos 2 DOM
呈现淡出出现类ProductDetailPhotos 1 DOM
并ProductDetailPhotos 2 DOM
通过 CSS 启动动画。ProductDetailPhotos 1 DOM
动画退出并ProductDetailPhotos 2 DOM
进入。ProductDetailPhotos 1 DOM
终于消失了
我的期望如下:
Products DOM
被渲染- 单击导航链接到 /product-detail
ProductDetailPhotos DOM
首先使用淡入淡出类呈现- 然后
Products DOM
开始动画退出 CSS 与淡出退出类和ProductDetailPhotos DOM
淡出出现类。
谢谢。