ThemeContext.jsx
import React from "react";
const ThemeContext = React.createContext();
ThemeContext.displayName = "ThemeContext";
export default ThemeContext;
MainContent.jsx
import { useContext } from "react";
import ThemeContext from "./ThemeContext";
function MainContent(props){
const { theme, toggleTheme } = useContext(ThemeContext);
return (
<div
style={{
width: "200vw", // 수정: 오타 수정
height: "100vh",
padding: "1.5rem",
backgroundColor: theme === "light" ? "white" : "black", // 수정: 비교 연산자 수정
color: theme === "light" ? "black" : "white", // 수정: 비교 연산자 수정
}}
>
<p>안녕하세요, 테마 변경이 가능한 웹사이트 입니다.</p>
<button onClick={toggleTheme}>테마 변경</button>
</div>
);
}
export default MainContent;
DarkOrLight.jsx
import { useState, useCallback } from "react";
import ThemeContext from "./ThemeContext";
import MainContent from "./MainContent";
function DarkOrLight(props) {
const [theme, setTheme] = useState("light");
const toggleTheme = useCallback(() => {
if (theme === "light") {
// 수정: 비교 연산자 수정 및 문자열 따옴표 추가
setTheme("dark");
} else if (theme === "dark") {
// 수정: 비교 연산자 수정 및 문자열 따옴표 추가
setTheme("light");
}
}, [theme]);
return (
<ThemeContext.Provider value={{ theme, toggleTheme }}>
<MainContent />
</ThemeContext.Provider>
)
}
export default DarkOrLight;
index.js
import DarkOrLight from "./chapter_14/DarkOrLight";
//14
ReactDOM.render(
<React.StrictMode>
<DarkOrLight />
</React.StrictMode>,
document.getElementById("root")
);
'프론트엔드 > React' 카테고리의 다른 글
State끌어올리기 || 섭씨온도와 화씨온도 표시하기 (0) | 2024.02.05 |
---|---|
form React 사용 (0) | 2024.02.05 |
훅을 사용한 컴포넌트 개발 (수용인원) (0) | 2024.02.02 |
리액트로 쇼핑몰 만들기 (1) | 2024.01.29 |
State (0) | 2024.01.29 |