January 12, 2021
์ข ์๊น handleSubmit ๋ด์ DOM ์์๋ค์ ์ฃผ์์ฒ๋ฆฌํ๊ณ store.js ๋ฅผ ๋ง๋ค์๋ค.
ํ๋ก์ ํธ ๊ฒฝ๋ก ๋ด src ๋๋ ํ ๋ฆฌ ์๋จ์์ ์์ฑํ๋ค.
import { createStore } from 'redux'
const ADD = 'ADD'
const DELETE = 'DELETE'
export const addToDo = text => {
return {
type: ADD,
text,
}
}
export const deleteToDo = id => {
return {
type: DELETE,
id,
}
}
const reducer = (state = [], action) => {
switch (action.type) {
case ADD:
return [...state, { text: action.text, id: Date.now() }]
case DELETE:
return state.filter(toDo => toDo.id !== action.id)
default:
return state
}
}
const store = createStore(reducer)
export default store
๊ทธ๋ฐ๋ฐ store.subscribe() ๋ ์ด๋๋ก?
state ์ ๋ณํ๊ฐ ์๊ธธ ๋๋ง๋ค App ์ ๋ฆฌ๋ ๋ ํ๊ฒ๋ ๋ณ๊ฒฝ์ฌํญ์ ์๋ ค์คฌ๋ ์์ด๊ฐ subscribe ์ด๋ค.
๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋๋ฐ, ์ด์ ์งํํ๋ Vanilla.js-Redux ์ ๋ฌ๋ฆฌ
React-Redux ๋ store ์ ๋ณ๋์ฌํญ์ ๋ํด subscribe ํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.
ํ์ฌ App ์ ๋ฐฉ๊ธ ๋ง๋ store ์ ์ฐ๊ฒฐํ๋ ์์ ์ ํ๊ฒ ๋๋ค.
import { Provider } from 'react-redux'
import store from './store'
์.. store ๋ ์ฌ๊ธฐ์ ๋ถ๋ฌ์ฌ๋ ค๊ณ exports default store ๋ฅผ ์ ์ธํ๊ตฌ๋?!
์ด์ ReactDOM ๋ด ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์์ ํ๋ค.
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
)
App ๊ณผ store ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๋ ๋ฒ์งธ๋ < App/ > ์ Provider ๋ก ๊ฐ์ธ์ฃผ๋ ๊ฒ์ด๋ค.
์ธ ๋ฒ์งธ๋ก๋ Provider ๋ store ๊ฐ ํ์ํด์ props ๋ก ์๊น ๋ง๋ store ๋ฅผ ๋ด๋ ค ์ฃผ์๋ค.
index.js ์ Provider ๋ฅผ ๋ถ๋ฌ์ ๋ด ์ฑ์ ์ฐ๊ฒฐํจ์ผ๋ก์จ ์ป๋ ์ด์ ์ด ๋ฌด์์ด ์์๊น?