Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- supabase 페이지네이션
- 이진탐색
- react
- 글또10기x코드트리
- 스크롤이벤트
- Next.js
- 글또10기
- map
- set
- array
- Spring
- 상속
- interface
- javascript
- 안드로이드빌드에러
- meatadata
- 슬라이딩윈도우
- extends
- TS
- 타입스크립트
- 배열중복요소제거
- supabase auth
- reactnative
- generic
- Filter
- async
- xlsx-js-style
- app.post
- 페이지네이션
- supabase authentication
Archives
- Today
- Total
rhanziy
React - 공유할 state가 많다면? Redux toolkit 라이브러리 본문
컴포넌트끼리는 state를 props 문법으로 공유할 수 있다.
하지만 공유할 state가 많다면,... 자식 컴포넌트가 많은 복잡한 구조라면....!
redux를 설치해보자.
리액트와 리액트 돔 버전이 18.1.x 이상이여야 설치가 가능하니
package.json파일에 가서 버전 확인/수정해준다.
터미널 오픈 후 install.
npm install @reduxjs/toolkit react-redux
그리고 index.js에서 필요한 셋팅
import { Provider } from "react-redux"; // Provider import
import store from './store.js'
// Provider로 <App />을 감싸주면 된다. 속성은 store
//그럼 이제 <App>과 그 모든 자식컴포넌트들은 store.js에 있던 state를 맘대로 꺼내쓸 수 있다.
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
</React.StrictMode>
);
설치가 완료 됐다면 state를 하나로 관리하는 파일을 만들고(보통 store.js로 작명)
그 파일에 셋팅을 해준다.
import { configureStore, createSlice } from '@reduxjs/toolkit'
// 공유할 state 생성. useState()와 용도가 비슷하다.
let cart = createSlice({
name : '작명',
initialState : 데이터구조
})
// 작명된 createSlice.reducer를 통해 등록하는 작업
export default configureStore({
reducer: {
cart : cart.reducer
}
})
state를 사용할 때는
// state를 사용할 컴포넌트 파일에서
import { useSelector } from "react-redux"
// useSelector 함수에 return값을 지정해주면 store에 저장했던 state가 다 담겨져온다.
// state.cart 이렇게만 return도 가능, 꺼내 쓸 때도 당연히 가능.
function Cart(){
let state = useSelector((state) => state )
console.log(state)
return (생략)
}
'React' 카테고리의 다른 글
React - 실시간 데이터 전송이 필요할 때 react-query 라이브러리 (0) | 2022.12.06 |
---|---|
React - Redux toolkit 에서 state 변경하기(장바구니 기능) (0) | 2022.12.06 |
React - axios 라이브러리로 ajax요청 (0) | 2022.11.24 |
React - styled components 라이브러리 (0) | 2022.11.22 |
React - 이미지 넣는 방법 3가지 (0) | 2022.11.22 |
Comments