일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- next #middleware
- react
- EC2
- axios
- 프로그래머스
- s3확장자
- 리액트
- elasticIP
- MySQL
- .env
- 프리티어
- 부족한 금액 계산하기
- 리액트코드정렬
- reacts3
- 자연수 뒤집어 배열로 만들기
- vscode
- express
- dotenv
- useReducer
- utf8mb4
- prettier
- 코드정렬
- max_allowed_packet
- 코딩테스트
- Node
- 커밋 한번에
- interactive_timeout
- 제일 작은 수 제거하기
- AWS
- 자동완성방지
- Today
- Total
Sungtt
리액트, MySQL로 아주 쉽게 게시판 만들기 - 3 [React, MySQL, express, axios] 본문
리액트로 아주 쉽게 게시판 만들기 - 3 [React, MySQL, express, axios]
이전 글에서 게시물 등록을 하여 데이터를 db에 보내주기까지 진행하였습니다.
이어서 db에 들어있는 데이터를 다시 가져와 프론트에 출력해보도록 하겠습니다.
먼저 server.js에 db 데이터를 뿌려주는 코드를 작성합니다.
24번째 줄코드에서 주의하실 점은
const sqlQuery = "SELECT * FROM 테이블이름;";
이처럼 FROM 뒤에는 본인이 생성한 테이블의 이름을 넣어주셔야 합니다.
저는 이전에 board라 생성하였습니다.
그리고 http://localhost:8000/api/get 로 접속해볼까요?
아래처럼 db의 데이터들을 json형식으로 잘 get 해주고 있습니다.
이제 이 json을 프론트에서 출력하는 코드를 작성해봅시다.
마찬가지로 Axios를 통해 api통신을 합니다. json이 있는 api/get을 긁어모아
ViewContent값으로 변경해줄 것입니다.
저는 화면 첫 렌더링 때 데이터들을 불러오기 위해 useEffect를 사용하였습니다.
그리고 ViewContent의 map() 내용을 수정해줍니다.
이전에 key={index}를 p태그에 넣어줬었는데, 부모 요소 div로 이동해줍니다.
그렇지 않으면 오류가 납니다.
이제 등록을 하고 새로고침을 해도 게시물이 남아있습니다.
상태 값으로만 유지되던 게시물 데이터를 이제 db에 담아서 주고받기 때문입니다.
하나 부자연스러운 건 등록을 눌러도 바로 렌더링 되지 않습니다.
등록을 누르면 api로 boardContent의 상태 값을 보내줄 뿐이지 리액트가
렌더링이 될 조건에 포함되지 않기 때문입니다.
좀 더 자연스러운 플로우를 위해 등록 버튼을 누를 때마다
데이터를 받아오게끔 함수를 만듭니다.
별 거 없습니다. 아까 useEffect안에 들어있던 코드를 함수로 따로 만들어주고,
submit 함수에서 호출시켜줍니다!
그럼 이제 등록버튼을 누르면
post로 데이터를 전송하고 나서, get으로 다시 받아오는 거까지
차례대로 실행되기 때문에 등록 시마다 렌더링이 됩니다.
이렇게 해야 리 렌더링이 되는 이유는
get으로 받아오는 순간 viewContent의 값이 변경되는데
리액트 렌더링의 조건중 하나가 state값이 변경될 때라서 그렇습니다.
다음 글에서는 수정과 삭제 기능을 추가해보겠습니다.
'React' 카테고리의 다른 글
배포전에 WARNING 하나씩 없애보기 (0) | 2022.02.23 |
---|---|
yarn : 이 시스템에서 스크립트를 실행할 수 없으므로 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오. (0) | 2022.02.22 |
리액트, MySQL로 아주 쉽게 게시판 만들기 - 2 [React, MySQL, express, axios] (0) | 2022.01.31 |
리액트, MySQL로 아주 쉽게 게시판 만들기 - 1 [React, MySQL, express, axios] (0) | 2022.01.31 |
게시판 구현 중 리액트 리렌더링 방지! 노란선 (0) | 2022.01.30 |