김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 원격저장소
  • ㄱ
  • local저장소
  • Remote저장소
  • 깃허브데스크탑
  • GitHubDesktop
  • 로컬저장소
  • KMU_WINK

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[React] 리액트 장고 연동#2, 리액트 한 파일에서 두개 컴포넌트 만들기, 구조분해를 사용하여 props쉽게 받기
• 개발/React

[React] 리액트 장고 연동#2, 리액트 한 파일에서 두개 컴포넌트 만들기, 구조분해를 사용하여 props쉽게 받기

2022. 2. 6. 23:16
 

[React] 리액트 장고 연동#1 , input태그 여러개한번에 관리하기, React에서 form사용하기

 앞전에 node.js를 한참 공부했었는데, 공부해보면서 나한테는 사실 뭔가 잘 맞는거 같지가 않았다. 조금 체계적이지 않다할까? 너무 선택적지도 많고.. 대신 장고공부를 계속 했었다. 장고내에서

devforyou.tistory.com

 


리액트장고 연동#1 에서는 Post를 입력하는 Form태그를 만들었다. 추가 버튼을 누르면 아이템들이 촤르륵~ 떠야한다. 그러기 위해서 ItemList와 그속에 존재하는 Item을 만들어보자!

//Post.js

const result = [
	{ 
    	id : 1,
        name : "감자",
        price : 3000,
    },
	{ 
    	id : 2,
        name : "피자",
        price : 10000,
    },
    


]




return (
    <>
      <h1>포스트입니다</h1>
      <form onSubmit={onSubmitItem}>
        <input placeholder="제품명" type="text" name="name" onChange={onInputChange} value={name}/>
        <input placeholder="가격" type="number" name="price" onChange={onInputChange} value={price}/>
        <button type="submit">추가</button>
      </form>

      <h2>등록제품</h2>
      <div>
        <ItemList users={result}/>
      </div>
    </>
  )

ItemList에 props로 result를 넘겨준다. 지금은 더미데이터를 사용하겠지만, 최종적으로 원하는 목표는 Post.js에서 서버로 데이터를 fecth하여 그려주는 것이 목적이다. 내가 구상한 users에 담길 데이터는 id,name,price이다. DB에서의 고유 값인데 삭제를 구현하기 위해서 필요하다. 지금은 그냥 수동으로 상수하나를 만들어서 최상단에 적어주자!

ItemList가 담당할 역할이다.

 

 

# 하나의 js파일에서 두개의 컴포넌트(?)만들기

이렇게 코드를 짜도 되는지는 모르겠는데, 예전에 비슷하게 구조를 설계할때는 ItemList.js Item.js를 각각 만들어서 관리를 했다. 일단 함수형으로 코딩을 하니까 그러면 한파일에 두개를 적으면 안될까? 하고 적어 봤는데 됐다..

//ItemList.js

import React from 'react'

const Item = () => {

	return (
    	<>
        
        </>
    
    )

}


const ItemList = () => {

	return (
    	<>
        	<Item/>
        </>
    
    )


}

export default ItemList;

이렇게 작성하면 최대장점은, Item과 ItemList 컴포넌트는 서로 종속성이 심해서 왔다갔다 같이 코딩해야하는데 한파일안에서 볼 수 있고 바로 따로 추가같은거 안하고 바로 사용할 수 있다. export는 ItemList만 했는데 Post.js에서 Item은 따로 사용할 일이 없어서 그랬다. 만약 Item컴포넌트까지 같이 export하면 어떻게 사용해야 할까 궁금증이 생겼다.

###두개 또는 이상 Export하고 import하여 사용하기

//ItemList.js
export {ItemList, Item};


//Post.js
import {ItemList, Item} from "./ItemList";

export할때는 default를 뺀다. default는 한개만 export할 수 있다고 해서, 여러개를 export할 경우 먹지를 않았다!

import는 저렇게 구조분해 하듯이 사용하면 된다! 

# 구조분해하여 props받기

구조분해를 사용하면 귀찮게 props.****을 치지 않고 그냥 ****으로 사용할 수 있다. 아마 JS최신 문법일 것이다. props도 똑같이 사용할 수 있다.

//Post.js
<ItemList users={result}/>

//ItemList.js

const ItemList = ({users}) => {
  return(
    <>
      <table>
        <thead>
          <tr>
            <th>번호</th>
            <th>제품명</th>
            <th>제품가격</th>
            <th>ID</th>
          </tr>
        </thead>
        <tbody>
          {users.map((user,index)=>(
            <tr>
              <Item index={index+1} key={index} my_id={user.id} name={user.name} price={user.price}/>
            </tr>
          ))}
        </tbody>
      </table>
    </>
  )
}

저런식으로

const ItemList = ({users}) => {} 여기에 {users}로 담아오면 그 뒤로부터 props.users 사용하지 않고 users라고 사용하면 된다!


다음에는 두근두근 세근세근 axios를 이용하여 연동해보자!

저작자표시 (새창열림)

'• 개발 > React' 카테고리의 다른 글

[React] 리액트 장고 연동#3, GET,DELETE,POST 요청 장고로 보내기, POST,DELETE후 자동으로 GET하기, 리액트 함수 자손으로 내려보내기  (0) 2022.02.07
[React] 리액트 장고 연동#1 , input태그 여러개한번에 관리하기, React에서 form사용하기  (0) 2022.02.06
    '• 개발/React' 카테고리의 다른 글
    • [React] 리액트 장고 연동#3, GET,DELETE,POST 요청 장고로 보내기, POST,DELETE후 자동으로 GET하기, 리액트 함수 자손으로 내려보내기
    • [React] 리액트 장고 연동#1 , input태그 여러개한번에 관리하기, React에서 form사용하기
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바