Redux toolkit 공부하고 적용해보기 ❕
redux toolkit 설치
npm install @reduxjs/toolkit
store등록
configureStore
// states/index or store/index
import { configureStore } from '@reduxjs/toolkit'
export default configureStore({
reducer: {}, // redeuce모아두는 것 필수! 5번에서 나온다.
})
// index.tsx
...
import { store } from './store'
import { Provider } from 'react-redux';
...
ReactDOM.render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>
</React.StrictMode>,
document.getElementById('root')
)
...
// states/test
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
const INITAL_STATE = {
text: 'test의 initial 값입니당~',
}
export const testSlice = createSlice({
name: 'test',
initialState: INITAL_STATE,
reducers: {
searchValue: (state, action) => {
state.text = action.payload
},
},
})
export const testActions = testSlice.actions // 변화할 때 필요하다. 7번에서 필요
export default testSlice.reducer
createSlice는 기존에 createReducer와 createAction 이 하던 일을 같이 해준다. 즉 actions를 위한 파일을 또 만들지 않아도 된다는 것!
// states/index
import { configureStore } from '@reduxjs/toolkit'
import test from './test'
export default configureStore({
reducer: {
test,
}, //
})
// Test
import { useSelector } from 'react-redux'
const value = useSelector((state) => state.test.text) // 가져오기
...
<div>{value}</div>
7. dispatch해보기
import { useSelector, useDispatch } from 'react-redux'
import { testActions } from 'states/test'
...
const dispatch = useDispatch()
const value = useSelector((state) => state.test.text) // 가져오기
const handleClick = () => {
const value = '바뀌어용'
dispatch(testActions.searchValue(value)) // reduce호출 후 dispatch
}
...
<div>{value}</div>
<button type='button' onClick={handleClick}>
dispath해보아요
</button>
위와 같이 버튼을 만들고 클릭을 하게되면 아래와 같이 바뀌는 것을 확인할 수 있다.
오늘은 redux toolkit을 공부해보고 알아봤당. 조금 괜찮은듯 헷갈린다. 현재까지 리코일이랑 리덕스 둘 중에 뭐가 더 나은가 라고 한다면 아직은 리코일이다.. 리덕스 툴킷으로 리덕스가 조금은 편리해진것 같지만 그래도 리코일이 훨씬 작성하기 쉬운 것 같다.. 그리고 오늘 강의 시간에 배운 GA이벤트도 시간이 된다면 내 포트폴리오에 넣어봐야겠다!