동석쿠
프로그래밍 공부
동석쿠
전체 방문자
오늘
어제
  • 공부 (80)
    • 공부기록 (64)
      • 웹개발 (6)
      • Java (7)
      • cs 공부 (3)
      • http 웹 기본 지식 (8)
      • 자바 스프링 (20)
      • 개인 미니프로젝트 (3)
      • 알고리즘 공부 (6)
      • 면접준비 (2)
      • 프론트공부 (8)
      • 파이썬 플라스크 (1)
    • 항해99 기록 (14)
      • 회고록 (10)
      • 팀프로젝트 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링
  • 프로그래머스
  • API
  • Post
  • 알고리즘
  • 리프레쉬토큰
  • 항해99
  • lombok
  • 리프레시토큰
  • 자바스크립트
  • 파이썬
  • 스프링부트
  • Get
  • JPA
  • 문법
  • 상속
  • 리스트
  • 자바
  • Java
  • 리액트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
동석쿠

프로그래밍 공부

공부기록/프론트공부

리액트 공부1. 기초 JSX 사용법 (리액트의 자바스크립트)

2022. 5. 30. 16:04

1. 태그에 class를 주고싶으면?

<div className = "클래스명"> </div>

//App.js
	<div className="black-nav">
        <div>개발 Blog</div>
    </div>
    
//App.css
body{
  font-family: 'nanumsquare';
}

.black-nav {
  background: black;
  width: 100%;
  display: flex;
  color: white;
  padding: 20px;
  font-weight: 600;

}

일반 HTML과 CSS와 비슷하게 작성 가능하다.

 

2. 리액트에서 데이터 바인딩 쉽게하는 법

데이터 바인딩 : 서버에서 데이터를 가져와서 들고다니는 것

 

기존 방식

 document.getElementById().innerHTML = ''? //이런식으로 데이터를 가져오거나
 let posts = '고기 맛집 리스트'; //이런식으로 변수를 지정

리액트 앵귤러 뷰등을 사용하면

<h4> { 변수명 } </h4>

이런식으로 훨씬 쉽게 데이터를 클라이언트에 보여줄 수 있다.

 

심지어 함수도 넣어줄 수 있다.

function 함수() {
	return 100
}

<h4> { 함수() } </h4>

이러면 리턴값이 클라이언트에 보여진다.

이렇게  { } 안에 src, id, href등의 속성을 변수명, 함수로 바꿔서 넣어줄 수도있다.

<div style={ { color : 'blue', fontSize : '30px' } }>개발 Blog</div>

css등을 집어넣을때 style을 사용할 수 있다. 대신 오브젝트 형식으로 넣어야한다.

function App() {

    let posts = { color : 'blue', fontSize : '30px' }

  return (
    <div className="App">
      <div className="black-nav">
        <div style={ posts }>개발 Blog</div>
      </div>
        <h4>개발 블로그</h4>
    </div>
  );
}

이런식으로 style={}문법으로 변수를 만들어 사용할수도있다.

 

3. state

지금까지는 데이터를 변수에 저장하여 가지고다니는 방법을 알아봤다.

state는 변수에 보관하지 않고 따로 보관하는 것

import React, {userState} from 'react';

맨위에 useState를 임포트한 후 

let [글제목, 글제목변경] =  useState('남자 코트 추천');

useState는 두개의 공간을 가지고 있다. 각각 '글제목'과 '글제목변경' 에 두가지를 담아줌,

'글제목'이라는 변수에는 '남자 코트 추천' 이 담겨있고 '글제목변경'이라는 변수에는 앞의 데이터를 변경하는 함수가 들어있다.

<h4> {글제목}</h4>

이렇게 사용하면 앞에 변수를 사용한것과 똑같은 결과를 보여준다. 이를 변수 대신에 쓸 수 있는 state라는 문법이다.

 

즉 정리하면

1. 변수 대신 쓰는 데이터 저장공간

2. useState()를 이용해 만들어야함

3. 문자, 숫자, array, object 다 저장 가능

 

state를 사용하면 리액트를 웹앱처럼 동작하게 만들 수 있다.

state는 변경이 될 때 데이터를 담고있는 HTML이 자동으로 재렌더링 된다. 즉 새로고침을 안해도 바뀜

변수를 사용할 경우 데이터가 변경되면 새로고침을 해야 바뀐다.

 

4.이벤트 리스너(핸들러)

let [따봉, 따봉변경] = useState(0);

<h4> {글제목[0]} <span onClick={ ()=>{ 따봉변경(따봉 + 1) } }>👍</span> {따봉} </h4>

state에 변경함수를 이용하여 따봉이라는 state의 값이 클릭할때마다 변경되게 만들 수 있다

function 따봉체인지() {
        return 따봉변경(따봉 + 1);
    }
    
<h4> {글제목[0]} <span onClick={ 따봉체인지 }>👍</span> {따봉} </h4>

혹은 이런식으로 함수를 만들어서 사용할 수도있다.

 

5. state변경하는 법

Array, Object state 데이터를 수정하려면 일단 변경함수를 써야한다.

변경함수(대체할 데이터)를 입력해주면 된다.

function 제목바꾸기() {
        let newArray = [...글제목]; //deep copy, reference data tpye 특징 (참조형 데이터)
        newArray[0] = '여자 코트 추천';
        글제목변경(newArray); //state를 아예 대체하는 함수
    }
<button onClick={ 제목바꾸기 }>버튼</button>    
    
글제목[0] = "이렇게하면 안되요" //이런식으로 state를 직접 변경하면 안됨

만약 let newArray = [글제목] 이렇게하면 값이 복사가 되지않고 참조가 된다.

state를 직접 건드리는건 권장사항이 아니다. 

 

만약 정렬을 하고싶다면?

    function sortedTitle() {
        let newArray = [...글제목];
        newArray.sort();
        글제목변경(newArray)
    }
<button onClick={ sortedTitle }>버튼</button>

위와같은 방식으로 정렬을 할 수 있다.

 

6.Component

HTML을 한 단어로 줄여서 쓸 수 있는 방법 : 리액트의 Component문법

fucntion App(){
	return(
    ....
    ...
    ..
    .
    <Modal/>
    )
}


function Modal() {
    return(
        <div className="modal">
            <h2>제목</h2>
            <p>날짜</p>
            <p>상세내용</p>
        </div>
    )
}

Component만드는 법

1. 함수 만들고 이름 짓고

2. 축약을 원하는 HTML을 넣고

3. 원하는 곳에서 <함수명/> 혹은 <함수명></함수명>

4. 만드는 위치는 fucntionApp() 밖에다 만들어야함 <functionApp도 하나의 Component임>

 

어떤걸 Component로 만드는게 좋을까?

- 반복출현하는 HTML 덩어리들

- 자주 변경되는 HTML UI들 

단점

-state쓸때 복잡해짐 (상위 component에서 만든 state 쓰려면 props문법 이용해야함)

 

 

'공부기록 > 프론트공부' 카테고리의 다른 글

리액트 공부2. 동적 UI (if사용), 반복문(map()사용), 입력  (0) 2022.05.31
Vue 기초 공부  (0) 2022.05.31
뷰 인텔리제이 프로젝트 생성  (0) 2022.05.30
리액트 인텔리제이 프로젝트 생성  (0) 2022.05.30
자바스크립트 기본 문법  (0) 2022.05.29
    '공부기록/프론트공부' 카테고리의 다른 글
    • Vue 기초 공부
    • 뷰 인텔리제이 프로젝트 생성
    • 리액트 인텔리제이 프로젝트 생성
    • 자바스크립트 기본 문법
    동석쿠
    동석쿠

    티스토리툴바