[javascript] MobX와 리액트 네이티브 모션

리액트 네이티브는 모바일 앱을 개발하기 위한 프레임워크로, 리액트 기반의 UI 라이브러리입니다. MobX는 리액트 상태 관리 라이브러리로, 선언적이고 간단한 방식으로 상태를 관리할 수 있게 도와줍니다. 이 두 가지 기술을 함께 사용하면 리액트 네이티브 앱의 애니메이션 처리를 쉽게할 수 있습니다.

MobX 소개

MobX는 단방향 데이터 플로우를 따르는 리액트 애플리케이션에서 상태 관리를 간결하게 해주는 라이브러리입니다. MobX에서는 관리할 상태를 observable로 지정하고, 해당 상태 변화에 따라 자동으로 뷰를 업데이트할 수 있습니다.

import { observable, action } from 'mobx';

class CounterStore {
  @observable count = 0;

  @action
  increment() {
    this.count++;
  }

  @action
  decrement() {
    this.count--;
  }
}

const counterStore = new CounterStore();

export default counterStore;

위의 예시 코드에서 CounterStore 클래스는 count라는 상태를 가지며, increment()decrement() 메서드는 해당 상태를 변경하는 역할을 합니다. @action 데코레이터는 MobX에게 해당 메서드가 상태를 변경하는 액션이라는 것을 알려줍니다.

리액트 네이티브 모션 소개

리액트 네이티브 모션은 리액트 네이티브 애니메이션을 간편하게 처리할 수 있도록 도와주는 라이브러리입니다. 애니메이션을 위한 선언적인 구문을 사용할 수 있어 개발자가 직관적으로 애니메이션을 구현할 수 있습니다.

import { AnimateSharedLayout, motion } from 'framer-motion';

const ExampleComponent = () => {
  return (
    <AnimateSharedLayout>
      <motion.div layoutId="example">
        This div can be animated and transitioned.
      </motion.div>
    </AnimateSharedLayout>
  );
};

export default ExampleComponent;

위의 예시에서 motion.div 컴포넌트는 애니메이션을 적용할 <div> 요소를 나타냅니다. layoutId 속성을 사용하여 애니메이션이 적용되는 요소의 고유 ID를 설정할 수 있습니다.

MobX와 리액트 네이티브 모션 함께 사용하기

MobX의 상태와 리액트 네이티브 모션의 애니메이션을 함께 사용하려면 MobX에서 관리되는 상태를 리액트 네이티브 모션의 애니메이션 속성에 바인딩하면 됩니다.


import { observer } from 'mobx-react';
import { motion } from 'framer-motion';
import counterStore from './counterStore';

const CounterComponent = observer(() => {
  const { count } = counterStore;

  return (
    <motion.div
      initial={{ opacity: 0 }}
      animate={{ opacity: 1 }}
      transition={{ duration: 0.5 }}
    >
      {count}
    </motion.div>
  );
});

export default CounterComponent;

위의 예시에서 CounterComponent는 MobX의 count 상태를 사용하고 있으며, 애니메이션 효과를 적용하고자 motion.div 컴포넌트를 사용해 뷰를 렌더링합니다. initial, animate, transition 속성을 사용하여 애니메이션의 초기 상태, 애니메이션 시간 등을 설정할 수 있습니다.

결론

MobX와 리액트 네이티브 모션을 함께 사용하면 리액트 네이티브 앱의 애니메이션 처리를 간편하게 할 수 있습니다. MobX로 상태를 관리하고 리액트 네이티브 모션으로 애니메이션을 구현할 때, 앱의 사용자 경험을 향상시킬 수 있는 다양한 애니메이션 효과를 적용할 수 있습니다.

참고 자료: