반응형
SMALL
mobx 사용해보기 1에서 연장된 내용으로 보면된다.
context 를 사용하면 여러 곳에서 상태를 공유할 수 있는데, 기억이 잘 안난다.
다시 한번 찾아봐야 할 것 같다.
아무튼 사용방법을 정리하자면
context 생성 -> provider에 props로 store 공유하기 -> usecontext 로 원하는 곳에서 state사용하기
뭐 이런 식인데 코드를 보자
1. context 생성
- 일단 여기서는 context 생성만 보도록 하자
- react에서 createContext 가져와서 만들어준다.
import { createContext, useContext } from "react";
// Context 생성
export const CounterContext = createContext();
// Provider 생성
export const CounterProvider = CounterContext.Provider;
// Store에 있는 value를 사용하기 위한 Hooks
export const useCounterStore = () => useContext(CounterContext);
2. provider 로 app 컴포넌트 감싸고 props로 store 공유하기
- 기존에 App 컴포넌트에 props로 store를 전달해줬는데 그거 뺀다.
- 필자는 1번에서 provider 를 생성해 놓아서 그걸 가져왔는데, 그렇게 안하고 CounterContext.Provider로 감싸줘도 같은 내용이다.
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import counterStore from './countStore';
import { CounterProvider } from './context/counterContext';
const store = new counterStore();
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<CounterProvider value={store}>
<App />
</CounterProvider>
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
3. Store에 있는 value 사용하기
- 커스텀훅 만들어서 사용했다. 1번 맨 밑에 보면 될듯
import './App.css';
import { observer } from 'mobx-react';
import { useCounterStore } from './context/counterContext';
function App() {
const myCounter = useCounterStore();
console.log('myCounter', myCounter);
return (
<div style={{ textAlign: 'center', padding: 16 }}>
카운트: {myCounter.count}
<br /><br />
마이너스?: {myCounter.isNegative}
<br /><br />
<button onClick={() => myCounter.increase()}>+</button>
<button onClick={() => myCounter.decrease()}>-</button>
</div>
);
}
export default observer(App);
반응형
LIST
'React.js > 상태관리' 카테고리의 다른 글
React에서 zustand 써보기 (0) | 2024.02.27 |
---|---|
React에서 Recoil 써보기 (1) | 2024.02.27 |
React에서 mobx 사용해보기 2 (decorator) (0) | 2024.02.26 |
React에서 MobX 사용해보기 (0) | 2024.02.26 |
react redux 기초4(applyMiddleware, thunk) (0) | 2024.02.07 |