본문 바로가기

JavaScript

자바스크립트 리액트 라이브러리 맛보기

728x90

자바스크립트 라이브러리 맛보기

 

📌 일반적인 공부루틴

  • 자바스크립트 기본
  • 프론트엔드 라이브러리 이것저것
  • Node.js기본
  • 백앤드 라이브러리 이것저것
  • npm을 활용한 전역 모듈

 

📌 리액트 라이브러리(react library)

규모가 큰 자바스크립트 라이브러리로, 사용자 인터페이스(UI)를 쉽게 구성할 수 있도록 도와줍니다.

리액트 네이티브를 활용해서 스마트폰에서도 빠른 속도로 작동하는 애플리케이션을 만들 수 있습니다.

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>document</title>
    <!-- 리액트 코어 -->
    <script src="https://unpkg.com/react@17/umd/react.development.js"></script>
    <!-- 리액트 문서관련 처리 -->
    <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
    <!-- 리액트 코드 쉽게 작성하기 위한 trans 컴파일러 -->
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
    <script>
        
    </script>
</head>
<body>
    <div id="root"></div>
    <script type="text/babel">
        const 컨테이너 = document.querySelector('#root')
        const 컴포넌트 = <h1>Hello World...!</h1>
        ReactDOM.render(컴포넌트, 컨테이너)
    </script>
</body>
</html>

 

📌 JSX

JavaScript Extension

자바스크립트 확장 문법

바벨 프로그램 → 자바스크립트 → 웹 브라우저에서 사용 가능!! 


📌 표현식 출력하기

{표현식} 기호를 사용합니다.

    <script type="text/babel">
        const 콘텐츠 = '안녕하세요'
        const 속성 = 'http://placedog.net/400/200'
        const 스타일 = {
            backgroundColor : 'yellow'
        }
        
        const 배열 = [<li>사과</li>,<li>오렌지</li>,<li>바나나</li>]

        const 핸들러 = (event) => {
            alert('클릭했습니다!')
        }
        // onclick → onClick
        // onchange → onChange
        // onmousedown → on mouse down → on Mouse Down → onMouseDown 

        const 컨테이너 = document.querySelector('#root')
        const 컴포넌트 = <div onClick = {핸들러}>
            <h1 style={스타일}>{콘텐츠}</h1>
            <img src={속성}/>   
            <ul>{배열}</ul>
        </div>

        ReactDOM.render(컴포넌트, 컨테이너)
    </script>


📌 컴포넌트의 기본적인 속성과 메소드

 

React.Component 클래스는 여러 속성과 메소드를 제공해줍니다. 이러한 속성을 변경하고 메소드를 오버라이트해 우리가 필요한 속성과 메소드를 클래스에 추가해서 컴포넌트를 만듭니다.

    <script type="text/babel">
        class App extends React.Component{
            constructor(props) {
                // this.props = props
                super(props) // 부모 생성자에 props 전달하면서 호출
            }

            // 메서드
            render(){
                return <h1>{this.props.속성A} - {this.props.속성B}</h1>
            }
        }

        const 컨테이너 = document.querySelector('#root')
        const 컴포넌트 = <App 속성A="값A" 속성B="값B"/>

        ReactDOM.render(컴포넌트, 컨테이너)
    </script>

props는  properties의 약자로 속성들을 의미합니다.


📌 리액트를 활용한 현재 시간 출력 프로그램

    <script type="text/babel">
        class Timer extends React.Component{
            constructor(props){
                super(props)
                // 화면에 변화하는 값을 만들 때 this.state 객체
                this.state = {
                    현재_시간: new Date().toLocaleString()
                }
            }
            componentDidMount () {
                // 화면에 변화하는 값을 지정하고 + 반영할때 this.setState()
                this.timerID = setInterval(() => { 
                    this.setState({
                        // setState 메소드를 사용해서 시간을 변경한다.
                        현재_시간: new Date().toLocaleString()
                    })
                }, 1000) 
            }

            componentWillUnmount () {
                clearInterval(this.timerID)
            }

            render () {
                return <h1>{this.state.현재_시간}</h1>
            }
            
        }

        class App extends React.Component{
            constructor(props) {
                // this.props = props
                super(props) // 부모 생성자에 props 전달하면서 호출
            }

            // 메서드
            render(){
                return <Timer />
            }
        }

        const 컨테이너 = document.querySelector('#root')
        const 컴포넌트 = <App 속성A="값A" 속성B="값B"/>

        ReactDOM.render(컴포넌트, 컨테이너)
    </script>

출력할 속성에 시간을 저장한다. 속성값을 변경할때 이 메소드를 사용한다.

컴포넌트 화면에서 출력, 제거 될때 이 명령어를 사용한다. 정도로 이해하고 넘어가면 됨.


📌 이벤트 연결하기

    <script type="text/babel">
           class App extends React.Component{
            constructor(props) {
                // this.props = props
                super(props) // 부모 생성자에 props 전달하면서 호출
                this.이벤트핸들러 = this.이벤트핸들러.bind(this)
                this.state = {
                    숫자: 0
                }
            }

            // 메서드
            render(){
                return <h1 onClick={this.이벤트핸들러}>{this.state.숫자}번 클릭했습니다.</h1>
            }
            이벤트핸들러 (event) {
                this.setState({
                    숫자: this.state.숫자 + 1
                })
            }
        }

        const 컨테이너 = document.querySelector('#root')
        const 컴포넌트 = <App />

        ReactDOM.render(컴포넌트, 컨테이너)
    </script>


이번강의에서 배운 state와 event 연결은 코드 자체를 외우는 것을 추천!


참고한 책 : 혼자 공부하는 자바스크립트