MUI 幻灯片切换不适用于两个幻灯片
MUI Slide Transition doesn't work with two Slide
我希望每个 mui 幻灯片的动画在单击按钮时起作用。但出于某种原因,他们不想一起工作。如果您注释掉其中一张幻灯片,第二张幻灯片就会开始工作,但它们在一起就不会了。
这是我的样本在 codesandbox 上的 link:https://codesandbox.io/s/happy-fire-csr2go?file=/src/demo.js
因为你使用isPink
来控制组件的渲染,当条件不成立时,组件在update
时卸载,不执行动画。
// don't use this
{isPink ? (<div></div>) : (<div></div>)}
代码片段
<Grid container item>
<Slide
in={isPink}
direction="left"
container={containerRef.current}
mountOnEnter
unmountOnExit
>
<Box
sx={{
position: "absolute",
width: 150,
height: 150,
bgcolor: "pink"
}}
>
<Button onClick={() => setIsPink(false)}>show aquamarine</Button>
</Box>
</Slide>
<Slide
in={!isPink}
direction="right"
container={containerRef.current}
mountOnEnter
unmountOnExit
>
<Box
sx={{
position: "absolute",
width: 150,
height: 150,
bgcolor: "aquamarine"
}}
>
<Button onClick={() => setIsPink(true)}>show pink</Button>
</Box>
</Slide>
</Grid>
完整代码演示
我希望每个 mui 幻灯片的动画在单击按钮时起作用。但出于某种原因,他们不想一起工作。如果您注释掉其中一张幻灯片,第二张幻灯片就会开始工作,但它们在一起就不会了。
这是我的样本在 codesandbox 上的 link:https://codesandbox.io/s/happy-fire-csr2go?file=/src/demo.js
因为你使用isPink
来控制组件的渲染,当条件不成立时,组件在update
时卸载,不执行动画。
// don't use this
{isPink ? (<div></div>) : (<div></div>)}
代码片段
<Grid container item>
<Slide
in={isPink}
direction="left"
container={containerRef.current}
mountOnEnter
unmountOnExit
>
<Box
sx={{
position: "absolute",
width: 150,
height: 150,
bgcolor: "pink"
}}
>
<Button onClick={() => setIsPink(false)}>show aquamarine</Button>
</Box>
</Slide>
<Slide
in={!isPink}
direction="right"
container={containerRef.current}
mountOnEnter
unmountOnExit
>
<Box
sx={{
position: "absolute",
width: 150,
height: 150,
bgcolor: "aquamarine"
}}
>
<Button onClick={() => setIsPink(true)}>show pink</Button>
</Box>
</Slide>
</Grid>