为什么不使用 useTransition 转换初始项目
why are initial items not transitioned out using useTransition
我正在使用 react-spring 的 useTransition 在页面之间进行转换,如下所示:
const context = useContext(AppContext);
const items = [context.page];
const transitions = useTransition(items, item => item.label, {
initial: {
transform: 'translate3d(0,0,0)',
opacity: 0.2,
},
from: {
transform: 'translate3d(100%,0,0)',
opacity: 1,
},
enter: { transform: 'translate3d(0,0,0)', opacity: 1 },
leave: { transform: 'translate3d(-100%,0,0)', opacity: 1 },
});
return (
<div className="app-content">
{transitions.map(({ item, props, key }) => (
<animated.div key={key} style={props}>
{renderPage(item.label)}
</animated.div>
)}
</div>
);
...
初始页面使用 'initial' 样式正确呈现,但未使用 'leave' 样式转换。导航到其他页面后,它们都按应有的方式转换,甚至返回那里时的初始页面。
那么,如何让初始页面像其他页面一样转出?
编辑:添加了 codesandbox 展示问题。
如果我正确理解了您的意图,您只需将初始对象中的 transform
设置为从 -0%
开始:
initial: {
transform: "translate3d(-0%,0,0)",
opacity: 0.2
},
我正在使用 react-spring 的 useTransition 在页面之间进行转换,如下所示:
const context = useContext(AppContext);
const items = [context.page];
const transitions = useTransition(items, item => item.label, {
initial: {
transform: 'translate3d(0,0,0)',
opacity: 0.2,
},
from: {
transform: 'translate3d(100%,0,0)',
opacity: 1,
},
enter: { transform: 'translate3d(0,0,0)', opacity: 1 },
leave: { transform: 'translate3d(-100%,0,0)', opacity: 1 },
});
return (
<div className="app-content">
{transitions.map(({ item, props, key }) => (
<animated.div key={key} style={props}>
{renderPage(item.label)}
</animated.div>
)}
</div>
);
...
初始页面使用 'initial' 样式正确呈现,但未使用 'leave' 样式转换。导航到其他页面后,它们都按应有的方式转换,甚至返回那里时的初始页面。
那么,如何让初始页面像其他页面一样转出?
编辑:添加了 codesandbox 展示问题。
如果我正确理解了您的意图,您只需将初始对象中的 transform
设置为从 -0%
开始:
initial: {
transform: "translate3d(-0%,0,0)",
opacity: 0.2
},