true
인 경우 이 컴포넌트는 레이아웃이 변경될 때 새 위치에 자동으로 애니메이션을 적용한다.<motion.div layout />
function App() {
const [ clicked , setClicked ] = useState(false);
const toggleClicked = () => setClick( prev => !prev);
return (
<Wrapper onClick={toggleClicked}>
<Box style={{ justifyContent: clicked ? "center" : "flex-start" ... }}>
<Circle />
</Box>
</Wrapper>
)
}
clicked
가 false
라면 좌측 상단에, true
라면(클릭했다면) 중앙에 오게 바꿨다.layout
prop 을 사용하게되면!!?? return (
<Wrapper onClick={toggleClicked}>
<Box style={{ justifyContent: clicked ? "center" : "flex-start" ... }}>
<Circle layout/>
</Box>
</Wrapper>
)
function App() {
const [ clicked , setClicked ] = useState(false);
const toggleClicked = () => setClick( prev => !prev);
const
return (
<Wrapper onClick={toggleClicked}>
<Box>
{!clicked ? <Circle/> : null}
</Box>
<Box>
{clicked ? <Circle/> : null}
</Box>
</Wrapper>
)
}
<Circle/>
은 같은 것이라고 말한다면? 연결되야 한다고 말한다면? return (
<Wrapper onClick={toggleClicked}>
<Box>
{!clicked ? <Circle layoutId="hi"/> : null}
</Box>
<Box>
{clicked ? <Circle layoutId="hi"/> : null}
</Box>
</Wrapper>
)
<Circle layoutId="hi"/>
같은 layout ID 를 부여하면, framer 는 circle 컴포넌트가 하나라고 생각한다.여기까지가 8강 복습이였다!
framer motion 은 .. 뷔페같다 :) ㅋㅋㅋㅋ
그럼 9강에서 다시봅시다아