从渲染Products
的状态开始。
我希望上面的Products
带动画退出,单击Products
视图中存在的NavLink to={'/product-detail/' + variant.id}
时出现ProductDetailPhotos
,但是,首先上面的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
- CCD_ 13和CCD_。
ProductDetailPhotos 1 DOM
设置动画以退出,ProductDetailPhotos 2 DOM
设置动画以进入 ProductDetailPhotos 1 DOM
最终消失
我的期望如下:
Products DOM
已渲染- 单击导航链接至/产品详细信息
ProductDetailPhotos DOM
首先使用淡入淡出类进行渲染- 然后
Products DOM
开始用带有淡出退出类的CSS和带有淡出出现类的ProductDetailPhotos DOM
动画退出
谢谢。
我自己解决了。转换此:
<Switch location={location}>
进入这个:
<Switch key={location.pathname} location={this.props.location}>