当道具改变时反应 spring 淡入淡出图像 in/out
React spring fade images in/out when prop changes
我有一个接受 imageSrc 道具的产品图块组件。每当更新 imageSrc 道具时,我希望旧图像在新图像淡入时淡出。在我当前的实现中,动画不起作用。我可以确认 imageSrc 正在正确更新,但是图像会立即更新而没有动画。我怎样才能让这个动画工作?
const imageTransition = useTransition(imageSrc, item => item.key, {
from: {
opacity: 0,
width: "100%",
},
enter: {
opacity: 1,
},
leave: {
opacity: 0
},
});
{imageTransition.map(({ item, props, key }) => (
<animated.img style={props} key={key} src={imageSrc}></animated.img>
))}
您应该在 render 方法中使用项目而不是图像 src。
{imageTransition.map(({ item, props, key }) => (
<animated.img style={props} key={key} src={item}></animated.img>
))}
更新:
我创建了一个工作示例:
https://codesandbox.io/s/animated-image-change-component-sy6vu
我有一个接受 imageSrc 道具的产品图块组件。每当更新 imageSrc 道具时,我希望旧图像在新图像淡入时淡出。在我当前的实现中,动画不起作用。我可以确认 imageSrc 正在正确更新,但是图像会立即更新而没有动画。我怎样才能让这个动画工作?
const imageTransition = useTransition(imageSrc, item => item.key, {
from: {
opacity: 0,
width: "100%",
},
enter: {
opacity: 1,
},
leave: {
opacity: 0
},
});
{imageTransition.map(({ item, props, key }) => (
<animated.img style={props} key={key} src={imageSrc}></animated.img>
))}
您应该在 render 方法中使用项目而不是图像 src。
{imageTransition.map(({ item, props, key }) => (
<animated.img style={props} key={key} src={item}></animated.img>
))}
更新:
我创建了一个工作示例: https://codesandbox.io/s/animated-image-change-component-sy6vu