useState 함수를 import한 후 사용해야함. (react에서 가져옴)
선언문과 리턴 사이에 useState를 작성함
그 함수에서는 초기값을 인자로 넣어 호출하면 배열을 반환해줌.
배열의 첫번째 요소는 상태값이 저장되는 변수이고,
두번째 요소는 상태값을 갱신하는 함수이다.
import React, { useState } from 'react';
// 1번 - import해서 사용해야함
function State() {
const [ color(변수명), setColor(초기값을 바꿔주는함수명)] =
// 4번 - 첫번째 값에는 상태값, 두번째는 갱신하는 함수
useState('red'(초기값)); //3번 - 초기값을 넣어 호출함
// 2번 - 선언문과 리턴 사이에 들어감
return (
<div>
<h1 color={{ color: color }}>안뇽~~~~~</h1>
</div>
)
}
// h1에 글자색으로 color state를 호출하였고 따로 값을 주지않았으므로,
// 안뇽의 글자색은 초기값인 빨간색으로 나오게된다.
import React, { useState } from 'react';
function State() {
const [ color(변수명), setColor(초기값을 바꿔주는함수명)] =
useState('red'(초기값));
return (
<div>
<h1 color={{ color: color }}>안뇽~~~~~</h1>
<button onClick={() => setColor('green')}>
글자색 바꾸기
</button>
</div>
)
}
// 버튼 클릭시 state의 값을 green 으로 바꿔줌
State정의하기와 마찬가지로 react로부터 리액트,useState를 가져옴.
자식 컴포넌트를 가져오기위해 자식 컴포넌트위치에서 자식컴포넌트를 가져옴.
부모의 State를 자식컴포넌트에게 전달하기.
자식컴포넌트에 props 생성해주기 (밑에서는 textColor)
props 값에 state값 할당해주기.
// Parent.js
//1번
import React,{ useState } from 'react';
//2번
import Child(자식컴포넌트) from '자식컴포넌트의 위치';
function Parent(부모컴포넌트) {
const [color, setColor] = useState('red');
// 3번 - 위에서 배운 State를 자식요소에게 전달할예정
return (
<div>
<h1>안뇽~~~~~</h1>
<Child textColor={color} />
//textColor = props
</div>
)
}
리액트로부터 리액트를 가져옴
자식컴포넌트에 인자로 props 넣어주기
props의 값은 항상 객체로 나옴
그렇기 때문에 부모컴포넌트에 부여한 props값을 넣어줘야 원하는값을 넣을수있다.
// Child.js
//1번
import React from 'react';
//2번
function Child(props) {
//3번
console.log(props) // textColor: 'red';
return (
<div>
//4번 props의 값은 객체이므로 키값을 넣어줘야 출력이됨!
<h1 style={{color : props.textColor}}>
Child Component
</h1>
</div>
)
}
import React, { useState } from 'react';
import Child from '../pages/Child/Child';
function Parent() {
const [color, setColor] = useState('red');
return (
<div>
<h1>Parent Component</h1>
<Child textColor={color}
// changeColor도 전달해줌
changeColor={() => setColor('blue')} />
</div>
);
export default Parent;
props 값에 changeColor 도 들어감.
onClick 할시 setColor 함수 실행
import React from 'react';
function Child(props) {
console.log(props) // {textColor : red ,
// changeColor : () => setColor('blue')}
return (
<div>
<h1 style={{color : props.textColor}}>
Child Component
</h1>
<button onClick={props.changeColor}>
//버튼 클릭시 color가 setColor로 인해 파란색으로 수정됨
Click
</button>
</div>
);
}
export default Child;