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;