개발자를 향해...
[초보자를 위한 리덕스 101] #3.2 mapStateToProps ~ #3.3 mapDispatchToProps 본문
웹 자바스크립트 공부/ReactJS + node.js
[초보자를 위한 리덕스 101] #3.2 mapStateToProps ~ #3.3 mapDispatchToProps
eugeneHwang1124 2021. 3. 9. 20:36728x90
반응형
본 글은 노마드코더 님의 [초보자를 위한 리덕스 101]을 수강하며 작성하였습니다.
#3.2 mapStateToProps
이제 우리는 redux state로부터 정보를 가지고올 수 있어야한다.store.getState()로 현재 상태를 가져왔었다.
bash라는 함수가 있는데 이 함수는 component를 store에 연결시킨다. 이 connect를 사용해보자.home.js에서
import { connect } from "react-redux";
를 추가한다. 그리고 todo를 추가하고 가져오기위해 밑부분에 다음 코드르 추가한다.
function getCurrentState(){
return { toDos: state };
}
export default connect(getCurrentState)(Home);
그리고 ul사이에 작동시키기 위해 <ul>부분을 작성한다.
<>
<h1>To Do</h1>
<form onSubmit={onSubmit}>
<input type="text" value={text} onChange={onChange} />
<button>Add</button>
</form>
<ul>{JSON.stringify(toDos)}</ul>
</>
#3.3 mapDispatchToProps
mapDispatchToProps을 사용할 때 mapstate는 필요하고 dispatch는 필요한 경우 다음고 같이 작성한다.
function mapDispatchToProps(dispatch) {
return {
console.log(dispatch)
};
}
export default connect(mapStateToProps, mapDispatchToProps)(Home);
이제 우리는 Home에서 dispatch를 할 수 있다.
function Home({ toDos, addToDo }) {
으로 바꾸어주자. 그리고 onSubmit을 다음과 같이 바꾸면
function onSubmit(e) {
e.preventDefault();
addToDo(text);
setText("");
}
addToDo에는 택스트가 필요하기 때문에 위와 같이 바꾸었다.
이제 새로운 prop을 만들어보자.
function mapDispatchToProps(dispatch) {
return {
addToDo: text => dispatch(actionCreators.addToDo(text))
};
}
export default connect(mapStateToProps, mapDispatchToProps)(Home);
그리고 store.js로 가서 export한것을 export하지 않도록 바꾼다.
export const addToDo = text => {
const addToDo = text => {
그리고 하단에 다음 코드를 추가한다.
export const actionCreators = {
addToDo,
deleteToDo
};
반응형
'웹 자바스크립트 공부 > ReactJS + node.js' 카테고리의 다른 글
[초보자를 위한 리덕스 101] #4.0 Redux Toolkit ~ #4.5 Conclusions (0) | 2021.03.10 |
---|---|
[초보자를 위한 리덕스 101] #3.4 Deleting To Do ~ #3.6 Conclusions (0) | 2021.03.10 |
[초보자를 위한 리덕스 101] #2.2 Delete To Do ~ #2.4 Conclusions (0) | 2021.03.09 |
[초보자를 위한 리덕스 101] #2.0 Vanilla ToDo ~ #2.1 State Mutation (0) | 2021.03.09 |
[초보자를 위한 리덕스 101] #1.2 Actions ~#1.4 Recap Refactor (0) | 2021.03.09 |