[React.js] State를 Props로 전달
2024. 3. 12. 11:57ㆍWeb/React.js
Bulb.jsx
const Bulb = ({ light }) => {
return (
<>
<div>
{light === "ON" ? (
<h1 style={{ backgroundColor: "orange" }}>ON</h1>
) : (
<h1 style={{ backgroundColor: "gray" }}>OFF</h1>
)}
</div>
</>
);
};
export default Bulb;
App.jsx
import "./App.css";
import { useState } from "react";
import Bulb from "./components/Bulb";
function App() {
const [light, setLight] = useState("OFF");
return (
<>
<div>
<Bulb light={light} />
<button
onClick={() => {
setLight(light === "ON" ? "OFF" : "ON");
}}
>
{light === "ON" ? "끄기" : "켜기"}
</button>
</div>
</>
);
}
export default App;
App.jsx state를 props로 Bulb.jsx로 전달해 상태를 변환시켜 렌더링 시킨다.
리액트의 리렌더링 조건
1. state가 변경되면 리렌더링이 된다.
2. props가 변경이되면 리렌더링이 된다.
3. 부모 컴포넌트가 리렌더링 되면 자식컴포넌트도 리렌더링이 된다.
서로의 컴포넌트에 간섭 되지않게(불필요한 리렌더링을 줄이기 위해) 상위 컴포넌트 App.jsx 가되도
Bulb.jsx
import { useState } from "react";
const Bulb = () => {
const [light, setLight] = useState("OFF");
return (
<>
<div>
{light === "ON" ? (
<h1 style={{ backgroundColor: "orange" }}>ON</h1>
) : (
<h1 style={{ backgroundColor: "gray" }}>OFF</h1>
)}
<button
onClick={() => {
setLight(light === "ON" ? "OFF" : "ON");
}}
>
{light === "ON" ? "끄기" : "켜기"}
</button>
</div>
</>
);
};
export default Bulb;
Counter.jsx
import { useState } from "react";
const Counter = () => {
const [count, setCount] = useState(0);
return (
<div>
<h1>{count}</h1>
<button
onClick={() => {
setCount(count + 1);
}}
>
+
</button>
</div>
);
};
export default Counter;
App.jsx
import "./App.css";
import Bulb from "./components/Bulb";
import Counter from "./components/Counter";
function App() {
return (
<>
<Bulb />
<Counter />
</>
);
}
export default App;
각기능별로 컴포넌트를 나눠서 관리한다면 불필요한 리렌더링을 줄일수 있다.
반응형
'Web > React.js' 카테고리의 다른 글
[React.js] useRef로 컴포넌트의 변수 생성하기 (0) | 2024.03.13 |
---|---|
[React.js] State로 사용자 입력 관리하기 (0) | 2024.03.12 |
[React.js] State - 상태 관리 (0) | 2024.03.11 |
[React.js] 이벤트 핸들링 (0) | 2024.03.11 |
[React.js] Props로 데이터 전달하기 (2) | 2024.03.10 |