从呈现Products
的状态开始。
我希望上面的Products
退出动画,并且当单击ProductDetailPhotos
视图中存在的NavLink to={'/product-detail/' + variant.id}
时出现Products
,但是,首先是上面的Products
替换为新的ProductDetailPhotos
,并在其后出现另一个新的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
已呈现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
已呈现ProductDetailPhotos DOM
首先使用出现褪色的类Products DOM
会通过淡出类和ProductDetailPhotos DOM
进行动画退出,从而退出CSS。谢谢。
答案 0 :(得分:0)
我自己解决了。改变这个:
<Switch location={location}>
对此:
<Switch key={location.pathname} location={this.props.location}>