$ yarn add redux
/ $ yarn add react-redux
만들어야 할 것은 세가지 입니다.
폴더 구조는 아래와 같습니다.
redux
를 Subscibers
라는 컴포넌트에서 사용할 것입니다.
컴포넌트를 만들어 주고
store.js
를 만들어 놓습니다.
컴포넌트와 비슷한 이름이면 좋으니 subscribers
라는 폴더를 만들어줍니다.
actions
와 reducer
입니다.일단 actions 부터 생성하겠습니다.
아래와 같이 생겼는데, 어디선가 actions의 함수를 호출하면 type을 return 해줍니다.
//actions.js
export const addSubscriber = ()=>{
return {
type: "ADD_SUBSCRIBER"
}
}
export const removeSubscriber = ()=>{
return {
type:"REMOVE_SUBSCRIBER"
}
"ADD_SUBSCRIBER"
와 같이 적힌 내용을 재사용 할 것이기 때문에 변수로 선언합니다.
export const ADD_SUBSCRIBER = "ADD_SUBSCRIBER"
그리고 이 내용을 새로운 types.js 라는 새로운 파일에 저장해서 불러서 사용하겠습니다.
//types.js
export const ADD_SUBSCRIBER = "ADD_SUBSCRIBER"
export const REMOVE_SUBSCRIBER ="REMOVE_SUBSCRIBER"
//actions.js
import {REMOVE_SUBSCRIBER,ADD_SUBSCRIBER} from './types'
export const addSubscriber = ()=>{...}
그 다음은 type을 토대로 state를 바꾸는 reducer.js 를 생성해줍니다.
import {REMOVE_SUBSCRIBER,ADD_SUBSCRIBER} from './types'
const initialState ={count : 370}
const subscribersReducer = (state=initialState,action)=>{
switch(action.type){
case ADD_SUBSCRIBER:
return {
...state,
count:state.count+1
}
case REMOVE_SUBSCRIBER:
return {
...state,
count:state.count-1
}
default:return state
}
}
export default subscribersReducer
types
들을 import 해오고initialState
라는 state
로 초기값을 만들어 놓습니다.subscribersReducer
라는 reducer
함수는 다음과 같습니다.이렇게 만든 reducer를 사용할 곳은 store입니다.
import {createStore} from 'redux'
import subscribersReducer from './subscribers/reducer'
const store = createStore(subscribersReducer)
export default store
만든 store를 사용하려면 최상위 컴포넌트에서 묶어줘야합니다.
import Subscribers from './components/Subscribers';
import {Provider} from 'react-redux'
import store from './redux/store'
function App() {
const count = 5
return (
<Provider store={store}>
<div >
<Subscribers/>
</div>
</Provider>
);
}
export default App;