2021. 4. 12. 23:43ㆍ개발공부/리액트 기초
yarn add react-router-dom
yarn add redux react-redux
- 라우팅 붙이기
설치 후 index.js가서
import {BrowserRouter} from "react-router-dom";
[App.js]
import {Route, Switch} from "react-router-dom";
import {withRouter} from "react-router";
조건부 렌더링 필요없으니 지워주고
경로를 설정해준다.
그리고 export
export default withRouter(App);
- 리덕스 붙이기
리덕스 모듈 먼저 만들어준다.
모듈이 있어야 스토어를 만들고 스토어가 있어야 컴포넌트랑 연결가능!
액션 만들기 - 이니셜 스테이트 - 액션 크리에이터 - 리듀서
스토어 만들어주기
index.js 가서 프로바이더 사용해서 붙여준다.
프로바이더 사용전에 프로바이더를 통해 주입해줄 스토어 import
provider로 감싸준다.
이제 App.js가서 connect해준다.
import { connect } from "react-redux";
함수 두개 가져온다.
export 해준다.
export default connect(mapStateToProps, mapDispatchToProps)(withRouter(App));
연결 끝!
이제 스토어에있는 값을 각각 가지고오게끔 연결해준다.
(=컴포넌트에서 리덕스 액션 사용하기)
Start.js의 이름이 뻥 뚫려있으니 이름 데이터를 가져와준다.
import {useDispatch, useSelector} from "react-redux";
퀴즈 모듈 리스트에 이름이있으니, 변수 추가
퀴즈안에 있는 name가져 올거니까 state.quiz.name
이제 dispatch를 사용해본다.
이 화면에서 이름을 적고 시작하기를 누르면 그 이름이 리덕스에 들어가있어야한다.
이름을 넘겨줘야하니 input에 ref를 먼저 걸어준다.
input에 ref={input_text}를 넣어주고
아래 버튼에도 온클릭 디스패치를 넣어준다.(버튼을 클릭해야 액션하게 해야하니까)
아 그전에
import {addUserName} from "./redux/modules/rank";
이름 저장하는 디스패치 마저 완성!
그리고 퀴즈도 풀 수있도록 history.push
이제 데이터를 props에서 가져오는게아니고 리덕스에서 가져오기때문에 map에러가 생겼다.
리덕스에서 가져오기위해선 일단 연결부터
변수 만들어주고
{props.list.map((l, idx) => {
에서
{quiz.map 으로 바꿔준다.
'개발공부 > 리액트 기초' 카테고리의 다른 글
스크롤바 (0) | 2021.04.13 |
---|---|
keyframes 웹에서 애니메이션 깔기 (0) | 2021.04.13 |
데이터 삭제하기 기능 (0) | 2021.04.12 |
[Redux] 컴포넌트에서 리덕스 데이터 사용하기(순서참고) + 디테일 페이지 수정 (0) | 2021.04.12 |
[Redux] 리덕스 생성, 스토어 컴포넌트와 연결 (0) | 2021.04.12 |