ttaeng_99 2020. 11. 30. 19:19
반응형

🤷 React.js 프로그래밍을 위한 다양한 스킬들

JSX는 <html>과 매우 유사하지만, 100% 일치하다고 보긴 힘들다. (props 지정 및 할당을 위한 inline-JS{})

여기에는, CSS 스타일링도 들어가야 할 것이고, 또 각각의 컴포넌트들을 어떤 파일구조로 제작하는게 효율적일지 아래 포스팅하겠다.


📒 Inline CSS Styles

JSX에서 기본적인 CSS 스타일링을 첨가하며, 이는 다음과 같이 작성된다.(double {{}}에 주의하자!)

<h1 style={{background: 'lightblue', color: 'darkred'}}>Please style me! I am so bland!</h1>

 

스타일하고자 하는 속성이 많을 경우, 이를 Object 형태로 변수에 저장해도 된다.

import React from 'react';
import ReactDOM from 'react-dom';

// 속성들을 Object 형태로 변수 저장
const styles = {
  background: 'lightblue',
  color: 'darkred',
  marginTop: '100px',
  fontSize: 50			// === '50px'
}

const styleMe = <h1 style={styles}>Please style me! I am so bland!</h1>;

ReactDOM.render(
	styleMe, 
	document.getElementById('app')
);

* 참고로, React 스타일링에선 hyphenated-lowercase(margin-top)이 아닌, camelCase(marginTop)으로 쓰인다.

* React 스타일링에서 그냥 숫자는 'px'값으로 인식함.

 

- style.js 파일에서 관리

 

같은 스타일을 여러 파일에서 공유하기 위해, style.js 파일을 만들어서 style Object를 공유한다.

// Style.js

const fontFamily = 'Comic Sans MS, Lucida Handwriting, cursive';
const background = 'pink url("https://content.codecademy.com/programs/react/images/welcome-to-my-homepage.gif") fixed';
const fontSize = '4em';
const padding = '45px 0';
const color = 'green';

// 변수에 담아서 공유!
export const styles = {
  fontFamily: fontFamily,
  background: background,
  fontSize: fontSize,
  padding: padding,
  color: color
}

 

// index.js

import React from 'react';
import { styles } from './styles'

// styles 변수에서 필요한 속성만 추출해서 새로운 변수 
const h1Style = {
  color: styles.color,
  fontSize: styles.fontSize,
  fontFamily: styles.fontFamily,
  padding: styles.padding,
  margin: 0,
};

export class AttentionGrabber extends React.Component {
	render() {
		return <h1 style={h1Style}>WELCOME TO MY HOMEPAGE!</h1>;
	}
}

이처럼, style.js에서 다양한 속성을 설정한 뒤 style 변수에 담아서 export 한다.

이후, 다른 js파일에서 이를 import 한 뒤, 필요한 속성을 다시 h1Style이라는 새로운 변수에 담아서 <h1>에 부여했다.


Javascript와 달리 숫자를 기본적으로 px로 받아들이는 React 스타일링의 특성을 숙지해야겠다.

또한, 별도 style.js를 만들에서 export 처리하는 부분도 실무에 적용되는 방법으로 잘 알고 있어야겠다.

반응형