본문 바로가기
개발(라이브러리,프레임워크)/react.js & react native

컴포넌트, 이벤트

by zieunee 2021. 5. 15.
반응형

컴포넌트 만들기

컴포넌트 상태 관리하기

기초에서 배운 것은 상태를 가지지않는 stateless컴포넌트였음

우리는 그것에서 더 나아가 상태를 가지거나 외관상 크게 변화하는 컴포넌트의 경우 상태를 갖고 관리해야한다.

상태를 가지게 하려면 ? > 값을 기억해야함 state 객체 가 값을 기억한다.

state 특징 및 사용하기

state는 한번 값을 설정한 이후 값을 변경할때 setState()메서드를 사용해야 변경된다.

초기화하기

class <컴포넌트의 이름> extends React.Component {
    constructor(props) {
        this.state = {<초깃값>}
    }
 ....

값 변경하기

this.setState({<이름> : <새로운값>})

ex> 시계 컴포넌트 만들기

<!DOCTYPE html><html>
<head>
    <meta charset="utf-8"> 
    <!--(1)-->
    <script src="https://unpkg.com/react@16/umd/react.development.js"></script> 
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
</head>
</html><body>
<div id = "root"></div>
<script type="text/babel">

class SClock extends React.Component {
    constructor(props) {
        super(props)
        this.state ={
            now:(new Date())
        }
        setInterval(e=>{
            this.setState({now: (new Date())})
        }, 1000)
    }
    render() {
        const now = this.state.now
        const hh = this.fmt(now.getHours())
        const mm = this.fmt(now.getMinutes())
        const ss = this.fmt(now.getSeconds())
        return (<div>{hh}:{mm}:{ss}</div>)
    }

    fmt(v){
        const s = "00" + v
        return s.substr(s.length - 2 , 2)
    }
}
const dom = <div><SClock /></div>
ReactDOM.render( dom,document.getElementById("root"))
</script>
</body>

state 상태를 매 시간마다 바꾼다. setstate()를 통해서

이벤드 구조와 구현

클릭이벤트

<div onClick={clickHandler}> Clicke Me </div>

//clickHandle 이거에 대한 이벤트 정의하면됨 

클릭했을때 클래스 메서드 호출

클릭했을때 this를 바인드해야 인식 가능하다.

 this.clickHandler = this.clickeHandler.bind(this)

render 메서드에서 이벤트 정의

class <컴포넌트 이름> extends React.component {
    render(){
        const handeler = (e) => alert('hello')
        return <button onClick={handler}>Click</button>
    }
}
반응형

'개발(라이브러리,프레임워크) > react.js & react native' 카테고리의 다른 글

리액트 네이티브 (오류해결)  (0) 2021.05.17
자동빌드, 웹팩  (0) 2021.05.16
가상 DOM  (0) 2021.05.14
리액트와 JSX의 관계  (0) 2021.05.13
리액트입문  (0) 2021.04.26