감싸인 요소

 

 

컴포넌트에 여러 요소가 있다면 반드시 부모 요소 하나로 감싸야 합니다.

 

function App() {
  

  return (
    <div>
     <h1>메인 화면</h1>
    </div>
  );
}


export default App;

 

<div> 태그로 감싸져있기 때문에 오류가 발생하지 않는다.

 

리엑트 컴포넌트에서 왜 하나의 요소로 감싸야 할까?

※ Virtual DOM에서 컴포넌트 변화를 감지해 낼 때 효율적으로 비교할 수 있도록

컴포넌트 내부는 하나의 DOM 트리 구조로 이루어져야하는 규칙이 있기 때문이다.

 

function App() {
  

  return (
    <Fragment>
     <h1>메인 화면</h1>
    </Fragment>
  );
}


export default App;

 

 

 

리엑트 v16이상 부터 도입 된 Fragment 를 사용 해도 되고

function App() {
  

  return (
    <>
     <h1>메인 화면</h1>
    <>
  );
}
export default App;

 

이렇게도 표현 할 수 있다.

 


자바스크립트 표현

JSX는 단순히 DOM 요소를 렌더링하는 기능만 있는 것이 아니라, 자바스크립트 표현식을 쓸 수도 있다.

자바스크립트 표현식을 작성하려면 JSX 내부에 코드를 { } 로 감싸면 된다.

 

 

※렌더링 :사용자 화면에 뷰를 보여주는 것

 

 

function App() {
  
 const name = '리엑트';
  return (
    <>
     <h1>오늘 할 일 : {name} 공부하기</h1>
      
    <>
  );
}
export default App;

 


If 문 대신 삼항 연산자

 

JSX 내부의 자바스크립트 표현식에서 if 문을 사용 할 수 없다

하지만 조건에 따라 렌더링 할 때는 JSX 밖에서 if문을 사용하여 사전에 값을 설정하거나,

{ } 안에 삼항 연산자(조건부 연산자) 를 사용하면 된다.

 

삼항 연산자 사용법

A ? B : C  

 

=> A가 true 면 B의 값을 반환하고 false 면 C의 값을 반환한다.

 

js

handleButtonClick = () => {
        this.setState({
            clicked : true,
            validated : this.state.password ==='0000'
        })
    }
    render(){
    return (
        <div>
            <input 
                type="password"
                value={this.state.password}
                onChange={this.handleChange}
                className={this.state.clicked ? 
                    (this.state.validated ? 'success' : 'failure') : ''}
                    />
                    <button onClick={this.handleButtonClick}>검증하기</button>
        </div>
    );
}
};

css

.success {
  background-color: lightgreen;
}

.failure {
  background-color: lightcoral;
}

 

 


인라인 스타일링

리엑트에서 DOM 요소에 스타일을 적용할 때는 문자열 형태로 넣는 것이 아니라 객체 형태로

넣어주어야 한다.

-문자가 포함되는 이름은 -문자를 없애고 카멜 표기법으로 작성해야한다.

 

ex)

background-color  -> backgroundColor

font-size -> fontSize

font-weight -> fontWeight

 

 

const Test = () => {
    
    
        const name = 'react';
        const style = {
            backgroundColor : 'blue',
            color : 'aqua',
            fontSize : '48px',
            padding: '16px'
        }
        return (
            <div style={style}>
            {name}
            </div>
            
        );
    };
    
  

export default Test;

 

'react' 카테고리의 다른 글

useEffect  (0) 2020.12.12
styled-components 설치 (css 사용)  (0) 2020.12.09
e.target 활용하기  (0) 2020.12.07
리엑트의 이벤트(Event)  (0) 2020.12.07
함수형 컴포넌트 useState 사용  (0) 2020.12.07

+ Recent posts