💫 반드시 변수명이나 컴포넌트는 PascalCase로 변경해야한다.
(파일명, 컴포넌트명은 모두 MainHeader 이런식으로 작성)
import React, { Component } from 'react'
import logo from '../logo.svg'
export default class Test2 extends Component {
render() {
const style= {
color: 'orange',
fontSize: '40px',
marginTop:'20px',
};
return (
<div style={style}>
<h2>안녕하세요</h2>
<img src={logo}></img>
</div>
)
}
}
변수는 리랜더링 되기때문에 초기화된다.
유의사항!
state의 작동원리: 이전 state값과 현재 state값을 비교해서 두값이 다르면 리랜더링함
ㄴ> 원시타입의 자료형과 객체타입이 다르니 새로운 배열을 만들어주어야한다.
다양한 데이터는 props라는 객체 하나로 받아서 사용이 가능하다.
아래와 같이 구조분해할당 문법도 가능 !
import React from 'react'
export default function ListChild(props) {
const {title, content} = props;
return (
<div>
<h2>{title}</h2>
<p>{content}</p>
<hr/>
</div>
)
}
아래는 ListChild 라는 부모 컴포넌트를 가져와 사용한다.
import React from 'react'
import ListChild from './ListChild';
import Modal from './Modal';
export default function List () {
return (
<div>
<h1>오늘 해야할 일</h1>
<hr />
<Modal />
<ListChild title="리액트 공부하기" content = "state 사용법익히기"/>
<ListChild title="뷰 공부하기" content = "정복하기"/>
<Modal />
</div>
)
}
import { useState } from 'react';
const [스테이트이름, 스테이트변경함수] = useState(초기값);
상태를 관리하는 state를 배열의 첫번째로 지정해주고, 해당 state를 변경할 수 있는 함수를 두번째로 지정해주면 된다.
그리고 useState의 ( ) 안에는 state 의 초기값을 넣어준다.
useSate는 한 컴포넌트에서 여러번 사용해도 된다.
import { useState } from 'react';
import './App.css';
function App() {
const [teacher, setTeacher] = useState('안나');
return (
<div className="App">
<button onClick={() => setTeacher('anna')}>영어로!</button>
<br />
<span>{teacher}</span>
</div>
);
}
export default App;