버전에 맞춰서 강의와 다른 코드가 있습니다.
결과 화면
파일 구조
- src/index.js
Provider는 <App/> 컴포넌트가 리덕스의 store에 접근할 수 있도록 한다.
import React from 'react'
import ReactDOM from 'react-dom/client'
import {Provider} from 'react-redux'
import store from './store/store'
import App from './App'
const root = ReactDOM.createRoot(document.getElementById('root'))
root.render(
<Provider store={store}>
<App/>
</Provider>
)
- src/components/ToDo.js
<ToDo/> 컴포넌트를 만들어 props로 데이터를 전달한다.
import React from 'react'
function ToDo(props) {
return (
<li>
{ props.text }
</li>
)
}
export default ToDo
- src/routes/Home.js
useSelector를 사용해 store의 state를 가지고 온다.
import React, { useState } from 'react'
import { useDispatch, useSelector } from 'react-redux'
import { addToDo } from '../store/store'
import ToDo from '../components/ToDo'
function Home() {
// ** Hooks
const dispatch = useDispatch()
// ** States
const [text, setText] = useState('')
// ** Redux States
const toDos = useSelector(state => state)
function onChange(e) {
setText(e.target.value)
}
function onSubmit(e) {
e.preventDefault()
dispatch(addToDo(text))
setText('')
}
return (
<>
<h1>To Do</h1>
<form onSubmit={onSubmit}>
<input type="text" value={text} onChange={onChange}/>
<button>Add</button>
</form>
<ul>
{
toDos.map((toDo, index) => {
return (
<ToDo text={toDo.text} key={index}/>
)
})
}
</ul>
</>
)
}
export default Home
'React > React with redux' 카테고리의 다른 글
[리액트][리덕스] #3.3 React Redux (To Do List 상세페이지) - 초보자를 위한 리덕스 101 (0) | 2023.04.29 |
---|---|
[리액트][리덕스] #3.2 React Redux (To Do List 삭제하기) - 초보자를 위한 리덕스 101 (0) | 2023.04.28 |
[리액트][리덕스] #3.0 React Redux (To Do List 세팅하기) - 초보자를 위한 리덕스 101 (0) | 2023.04.28 |
[리덕스] #2 Pure Redex: To Do List - 초보자를 위한 리덕스 101 (0) | 2023.04.27 |
[리덕스] #1 Pure Redex: Counter - 초보자를 위한 리덕스 101 (0) | 2023.04.20 |