Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

쩡이 개발공부 블로그

React 상태관리 MobX 본문

공부

React 상태관리 MobX

쪙잉ㅇ 2023. 9. 3. 15:41

useState를 사용해서 API 호출 결과를 관리하려고 했는데, 브라우저가 먹통(?)이 돼버렸다... 상태 변경 후에 업데이트 돼야 하는 컴포넌트가 렌더링 되지 않아서 그런가 싶었다.. 

사수분께서 MobX를 사용하면 될 것 같다고 말씀해주셔서 도움을 받았다 ..!

 

MobX 주요 개념

Observable State (관찰받고 있는 상태)

- 상태의 변경이 있으면 MobX에서 관찰하고 있다가 어느 부분이 바뀌었는지 파악한다.

 

Computed Value (연산된 값)

- 기존의 상태값과 다른 연산된 값에 기반하여 만들어질 수 있는 값으로 성능 최적화를 위해 사용된다. 어떤 값을 연산할 때, 연산에 기반되는 값이 바뀔 때만 새로 연산하고, 바뀌지 않았다면 기존의 값을 사용한다.

 

Reactions (반응)

- 값이 바귐에 따라 해야 할 일을 정한다. 즉, observable state의 내부 값이 바뀌면 따로 설정해둔 할 일을 실행한다.

 

Actions (행동)

- 상태에 어떻게 변화를 일으킬 것인지 정의하는 부분. (redux의 action과 같은 개념)

 

MobX 특징

  •  상태 관리 라이브러리이다.
    • 리액트에 종속되어 있는 라이브러리가 아니다! 
  • 옵저버 패턴을 사용한다.
  • MobX에서는 오직 상태(데이터)만 관찰 가능하며, 상태가 변경되었을 때 반응한다. 

 

MobX 기본 사용 함수

import {decorate, observable, action, computed} from 'mobx';
import {observer} from 'mobx-react';

 

사용 예시) 

useState를 사용했던 부분을 수정했다. 

const function = () => {
    const mallNum = new ObservableData<number>(0);
    function.method(params).then((num) => mallNum.data = num);
    
    return (
    	// 생략
        <div>(<TextDisplayer get={() => String(mallNum.data)} />몰)</div>
    )
};
  • observableData를 사용하면 상태가 변경될 때 자동으로 관련된 컴포넌트들이 업데이트된다.
  • MobX를 사용하면 상태 변경과 관련된 모든 컴포넌트를 자동으로 업데이트 하므로 컴포넌트 간의 의존성을 명시적으로 정의할 필요가 없다. 
    • 자동으로 의존성을 추적하고, 상태 변경 시 관련된 모든 컴포넌트를 업데이트하므로 효율적인 상태 관리가 가능하다.

 

 

 

배울것도 많고 공부할 건 더 많고 .. 화이팅 ..! 

'공부' 카테고리의 다른 글

useRef로 스크롤 이동시키기  (5) 2023.10.22
클린 아키텍처  (8) 2023.10.15
git push 되돌리기  (5) 2023.10.09
Swiper 슬라이드 사용해보기  (3) 2023.09.17
reduce 사용하기  (5) 2023.09.10
Comments