리액트 애플리케이션을 위한 상태 관리 라이브러리❗
깃허브에 14,000개 이상의 별이 있는 오픈 소스 상태 관리 라이브러리이며
페이스북의 소프트웨어 엔지니어인 Dave McCabe가 발명했음🤓
React 애플리케이션의 모든 구성 요소가 상태를
쉽게 공유할 수 있도록 전역 상태를 제공하며 Redex에 비해 최소화됨
Boilerplate : 기본 틀처럼 반복적으로 작성해야 하는 코드
✍Redex 에선 초반에 이런 코드들을 많이 작성
// store.js
// 리덕스에서 상태 관리를 위한 스토어를 생성하는 함수 import
import { createStore } from 'redux';
// 리덕스에서 사용할 기본 리듀서 정의 (아무 작업 안 함)
const reducer = (state = {}, action) => state;
// 리듀서를 이용해 스토어 생성
const store = createStore(reducer);
// 스토어를 다른 파일에서 사용할 수 있도록 export
export default store;
// App.js
// 리덕스 스토어를 리액트 컴포넌트에 제공하기 위한 Provider import
import { Provider } from 'react-redux';
import store from './store'; // 만들어 둔 스토어를 import
function App() {
return (
// Provider를 통해 하위 컴포넌트에 스토어를 공유
<Provider store={store}>
<YourComponent /> {/* 실제로 동작할 컴포넌트 */}
</Provider>
);
}
// App 컴포넌트를 export
export default App;
⬇
Recoil
// App.js
// 리코일 상태를 관리하기 위한 RecoilRoot import
import { RecoilRoot } from 'recoil';
function App() {
return (
// RecoilRoot로 하위 컴포넌트에 리코일 상태를 공유
<RecoilRoot>
<YourComponent /> {/* 실제로 동작할 컴포넌트 */}
</RecoilRoot>
);
}
// App 컴포넌트를 export
export default App;

리액트 앱 만들 때 Vite 사용해도 되고 create-react-app 만들어도 됨
npm install recoil...


App.js로 와서 div 태그 안에 모조리 지우고 npm run start로 실행해보자❗


이것도 똑같이 해주고
import TextInput from './components/TextInput';

input 안에 작성한 텍스트가 Echo: 여기에 반영되게 하려면❓
원래는 이렇게 하겠지만
만약에 TextInput 컴포넌트 안에 있는 text를
다른 컴포넌트인 CharacterCount 에서 쓰고 싶으면 어떻게 하지❓
그렇게 하고 싶으면 이렇게 부모 컴포넌트로 state를 올려서 해야됨
🔑atom 안에 유니크한 값을 줘야함
state 에서 저부분이 디폴트 값임
🎆이렇게 하면 아톰을 생성한 것
🔄textState 값이 변경 되면
아까 만든 textState를 useRecoilState 안에 넣어주면 됨🙆♀️
text는 현재 ' ' 빈 String임
⬇
👀
그럴려면 textState.length를 보여주고 싶은데 어떻게 하냐면❓
간단히 말해, Selector는 textState의 값이


또 타이핑 치면 그 값이 text로 들어가는 거임
이것도 마찬가지로 export로 내보내기🥏
🔁App.js 안에 있는 charCounState 함수가 리턴하는 값을
⬇
타이핑 한 문자열의 갯수를 실시간으로 잘 가져오는 걸 확인할 수 있음👀