기본 콘텐츠로 건너뛰기

[React] 시작 전 준비 마지막 및 정리 ( JSX , ReactDOM.render )

[React] 시작 전 준비 마지막 및 정리 ( JSX , ReactDOM.render )

안녕하세요

React 시작 전 준비 단계 3번째 입니다. JSX , 그리고 ReactDOM.render 및 제가 사용하면서 궁금했던 것들에 대해

그리고 이제까지 1,2단계에서 봤던 것들 정리 차원입니다.

리액트 시작 전 리스트 체크

1. 준비물 챙겼는지?

IDE - vscode (관련 플러그인, ESLint, Guides)

Node.js 설치

CRA(create-react-app) 설치

create-react-app 설치 후

> 1. create-react-app basic-react

> 2. cd basic-react

> 3. npm start

> 짜잔. Hello React

github(깃허브)

JS,HTML5,CSS3

> ES6

이외 사용 도구들 (시작하고 알아보기)

> webpack,babel ...

2. 리액트는 왜하는건지?

노마드 코더의 말을 빌리자면 매우 멋진 UI 라이브러리이며 그냥 js만 잘하면 다 할수 있다. 모든 화면들을

컴포넌트화 하여서 쪼개서 사용이 가능하다 vue. angular는 그에 따른 문법을 배워야 하지만 리액트 는 그렇지 않다.

또한 리액트는 View만을 위한 라이브러리 이기 때문에 다른 프레임워크와 같이 사용이 가능 하다.

3. 리액트 (create-react-app)

3-1 모든 컴포넌트는 Component를 상속 받아야 한다.

class tempComponent extends Component

3-2 모든 컴포넌트는 render () 함수가 있다.

render() {}

3-3 import React, { Component,Fragment } from 'react'; 는 필수

상속도 받고 render 부모로 Fragmnet 사용

4. JSX

리액트에서 사용 되는 문법으로 마치 HTML 을 쓰는 것과 같지만 다른점이 하나있다.

기존 HTML에서는 여러 줄 입력시

''+

'' 식을 거치지만 JSX에서는

와 같은 직접 HTML을 쓰는것 처럼 보이는 형태를 띄기 때문이다.

4-1 주석

주석은 단순하게 /* */ 가 아니라 { /* */ } 와 같이 작성한다.

4-2 위젯 생성

- 단순 버튼 생성

render() {

return(

);

}

- js를 통한 생성

const btnArr =[ "첫번째" , "두번째" , "세번째" ];

const listinputTag = btnArr . map ( item => < input type = "button" style = { btnStyle } value = { item + 1 } key = { item + 1 } > );

render(){

return(

{listinputTag}

);

}

- CSS 속성 입히기 (외부 스타일)

App.js

< div className = "react-CSS" > 여기는 div입니다.

App.css

.react-CSS { width : 550px ; height : 200px ; color : white ; background-color : black ;

}

- CSS 속성 입히기 (인라인 스타일)

App.js

const btnStyle = { backgroundColor: "#fafafa" , border : '1px solid #d3dbdf' , padding: '8px 13px 9px 15px' , margin: '0px 2px 0px 0px' , whiteSpace: 'nowrap' , fontWeight: '600' , cursor: 'pointer' , height: '50px' , width: '100px' , borderRadius: '3px' , WebkitTransition: 'all' , MozTransition: 'all' , msTransition: 'all' };

< button style = { btnStyle } type = "button" value = "test" />

index.js (ReactDOM.render)

ReactDOM.render : 리액트 돔 말그대로 React코드를 DOM (Document Object Model) 에 붙이는 역할을 합니다.

다른 의미로 IOS나 AOS같은 모바일에 붙이는 경우는 ReactNative.render(?) 가 있었던것처럼

화면구성은 React + Component 로 구성하고 붙이는 지점은 브라우저냐 모바일이냐 에 따라서

ReactDOM 이냐 ReactNative로 갈리는 것 같습니다. 완전한 분리 좋네요

import React from 'react' ; import ReactDOM from 'react-dom' ; import './index.css' ; import App from './App' ; import registerServiceWorker from './registerServiceWorker' ;

ReactDOM . render ( < App /> , document . getElementById ( 'root' )); registerServiceWorker ();

ReactDOM.render(만든컴포넌트, document.getElementById('root'))로 되어있는데

root는 어디있을까 했더니 public 폴더에 index.html 에 있는 에 붙는 것으로 보입니다.

결과 App.js

import React, { Component, Fragment} from 'react'; import './App.css'; // [React] 시작 전 준비 3단계( JSX && 스타일) class App extends Component { render() { const isButton = true; const btnArr=["첫번째","두번째","세번째"]; const btnStyle = { backgroundColor:"#fafafa", border : '1px solid #d3dbdf', padding: '8px 13px 9px 15px', margin:'0px 2px 0px 0px', whiteSpace:'nowrap', fontWeight:'600', cursor:'pointer', height: '50px', width:'100px', borderRadius:'3px', WebkitTransition:'all', MozTransition:'all', msTransition:'all' }; const listinputTag = btnArr.map(item => ); const listbuttonTag = btnArr.map(item=> {item+1} ); // [...new Array(10)].map(x => 0); const btnCnt = 3; const countBtn = Array(btnCnt).fill(null).map( (i,idx) =>{ let btnKey = "Count_"+idx; return Cnt_{idx} } ); return ( { isButton ? '버튼이 있다': '버튼이없다'} { isButton && '버튼이 있다'} {/* 버튼이 있기 때문에 해당 버튼을 생성 btnCnt만큼 */} 'map 을 통하여 버튼 렌더링 input 태그 btnArr=[1,2,3];' {listinputTag} 'map 을 통하여 버튼 렌더링 button 태그 btnArr=[1,2,3];' {listbuttonTag} count 변수를 통하여 버튼 렌더링 button 태그 현재 cnt : {btnCnt} {countBtn} 여기는 div입니다. ); } } export default App;

from http://ipex.tistory.com/175 by ccl(S) rewrite - 2020-03-06 12:20:41

댓글

이 블로그의 인기 게시물

[020] 파동함수를 쓰기

[020] 파동함수를 쓰기 [020] 파동함수를 쓰기 [020] 파동함수를 알면 우리가 원하는 뭔가를 알 수 있다고 했는데, 정작 파동을 함수로 쓰는 것은 아직 다루지 않았고, 양자역학 내용을 좀 더 진행하려면 왜 파동이 삼각함수로 써 지는지를 한번은 정리를 해야겠다. 수학이 많이 나올 예정이다. 앞에서 파동함수를 아래 형태로 쓸 수 있다고 했었는데, 왜 이런 형태가 되는지 알아보자. [020-01] 파동함수 사인파의 일반형은 코사인 (cos) 을 이용해 쓰지만, 사인 (sin) 과 코사인은 위상차이만 있는 함수들이고, 우리는 앞으로 사인을 이용해 문제를 풀 예정이라 사인을 이용하기로 한다. 파동함수는 양자역학에서 갑자기 나온 말이 아니고, 원래 파동을 함수의 형태로 쓴 것을 파동함수라고 부른다. 파동-입자 이중성을 가지니까 기존에 파동을 함수의 형태로 쓰던 그 모양을 가져다 쓴 것. 주교재의 16장에 있는 내용이다. [020-02] 펄스 - Pulse 아래와 같이 하나의 진동이 왼쪽에서 오른쪽으로 진행하는 상황을 생각해보자. 시간 t 일 때, 위치 x 의 밧줄의 높이를 y 라 하고, 셋의 관계를 기호로 쓰면, 그러면 아래의 관계가 성립한다. 이게 무슨말이냐면, 시간 t 일 때 위치 x 의 밧줄의 높이 와 시간 0 일 때 위치 x-vt 의 밧줄의 높이가 같다 는 말인데, 그림으로 보면, 왼쪽은 시간 0, 오른쪽은 시간 t 이고, t 일 때 P 의 높이와 0 일 때 높이가 같다는 것. [020-03] 파동을 식으로 써보자. 아래의 파동을 보자. 지금 내용부터는 사인이든 코사인이든 상관없는데, 위 그림이 사인이니까 아래의 식 으로 쓸 수 있다. A는 진폭이고, 주기, 진동수, 파장 같은 값을 아직 모르니까 a 는 아직 정해지지 않은 값 이다. 일반적으로 알고있는 삼각함수는 가로축이 각도 이지만, 우리는 공간을 진행하고 있는 파동을 다루니까 위의 형태로 써진다고 생각하자. x=0 에서 진폭이 ...

(주)편두리 채용 정보: PYUNDOORI에서 핫한 개발자분들을 모십니다.

(주)편두리 채용 정보: PYUNDOORI에서 핫한 개발자분들을 모십니다. - 좋아요 아래와 같은 업무를 훌륭히 감당하실 분을 모십니다.서비스 관련 DB 모델링, DB 최적화 작업서버 & DB 관리Frontend & Backend 인터페이스의 최적화 작업 화합과 성장을 같이! - Angular JS의 경험 - Node.js - javascript 능숙자 - DRMS 사용 능숙자 더 많은 내용은 더 많은 내용은 더팀스 에서 확인하세요! from http://theteams.tistory.com/742 by ccl(A) rewrite - 2020-03-22 12:20:20