C#, .NET Core, React - Project [6]

yoneeki·2024년 4월 30일

dotNetReact

목록 보기
6/7

React Router

  • BrouserRouter
  • Route
  • Link
  • NavLink
  • Redirect

React Router Hooks

  • useHistory
  • useLocation
  • useParams
  • useRoutMatch

중간체크

  • MobX 나오는 구간부터 미친듯이 정신없이 캐치업하느라 이론을 하나하나 체크하면서 가는 걸 포기하긴 했는데 그래도 지금이라도 일단 일단 체크.
  • 기본적으로 알아야 하는 것은, 자바스크립트로 프론트엔드를 구현할 때 변수를 관리하는 것이 백엔드보다 어려울 수 있다는 것이다. 이유는 데이터베이스에 연결되지 않은 상태이기 때문에. 그렇기 때문에 그 변수들을, 상태를 보다 더 잘 관리할 수 있게 도와주는 라이브러리가 필요하다.
  • 그러할 때, 우리는 필요에 따라 Redux를 쓰든지 MobX를 쓰는 것이다. 이번에는 MobX를 쓰기로 한 것이고.

MobX의 흐름

  • 상태정의 : 먼저 상태를 정의하고, MobX에서 관리하고자 하는 상태를 클래스나 객체로 선언. 이 상태는 MobX가 추적하고 관리할 데이터를 포함.
import { makeAutoObservable } from 'mobx';

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }
}

const counterStore = new CounterStore();
  • 상태 관찰자 설정: MobX는 상태를 관찰하고 상태가 변경될 때마다 알림을 받을 수 있는 관찰자를 설정. 이를 위해 makeObservable 또는 makeAutoObservable를 사용하여 상태 클래스를 MobX의 관찰 가능 클래스로 만듦.
import { makeAutoObservable } from 'mobx';

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }
}

const counterStore = new CounterStore();

// CounterStore 클래스를 관찰 가능하게 만들었으므로, 이제 이 상태를 관찰할 수 있음.
  • 액션 정의: 상태를 변경하는 메서드를 액션으로 정의. 액션은 상태 변경에 대한 모든 작업을 캡슐화하고, MobX에게 상태 변경이 발생했음을 알리는 역할을 수행. 보통은 runInAction 함수를 사용하여 상태 변경을 알림.
import { makeAutoObservable, runInAction } from 'mobx';

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }

  increment() {
    runInAction(() => {
      this.count++;
    });
  }
}

const counterStore = new CounterStore();
  • 상태 변경: 상태를 변경하는 작업을 수행. 이 작업은 액션으로 정의된 메서드를 호출하여 수행.
import { makeAutoObservable, runInAction } from 'mobx';

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }

  increment() {
    runInAction(() => {
      this.count++;
    });
  }
}

const counterStore = new CounterStore();

// 상태 변경을 호출하는 예시
counterStore.increment();
  • 상태 반응: 상태가 변경되면 MobX는 관찰자에게 상태 변경을 알림. 이에 따라 관찰자(예: React 컴포넌트)가 상태의 변경을 감지하고 필요한 대로 렌더링을 업데이트.
import { makeAutoObservable, runInAction } from 'mobx';
import { observer } from 'mobx-react-lite';

class CounterStore {
  count = 0;

  constructor() {
    makeAutoObservable(this);
  }

  increment() {
    runInAction(() => {
      this.count++;
    });
  }
}

const counterStore = new CounterStore();

// React 컴포넌트에서 MobX 관찰자로 상태 반응
const CounterComponent = observer(() => {
  return (
    <div>
      <p>Count: {counterStore.count}</p>
      <button onClick={counterStore.increment}>Increment</button>
    </div>
  );
});
profile
Working Abroad ...

0개의 댓글