import React, { useState, useEffect } from 'react';
const Background = () => {
const imageUrls = [
"./img/img1.jpg",
"./img/img2.jpg",
"./img/img3.jpg",
"./img/img4.jpg",
"./img/img5.jpg",
"./img/img6.jpg",
"./img/img7.jpg",
];
useEffect(() => {
const changeBackground = () => {
const randomIndex = Math.floor(Math.random() * imageUrls.length);
const imageUrl = imageUrls[randomIndex];
document.getElementById("background").style.backgroundImage = `url('${imageUrl}')`;
};
changeBackground();
const interval = setInterval(changeBackground, 5000);
clearInterval(interval);
};
}, []);
return <div id="background"></div>;
};
const Clock = () => {
const [time, setTime] = useState(new Date());
useEffect(() => {
const interval = setInterval(() => {
setTime(new Date());
}, 1000);
return () => {
clearInterval(interval);
};
}, []);
const hours = time.getHours();
const minutes = time.getMinutes();
const seconds = time.getSeconds();
return <div id="clock">{hours} : {minutes} : {seconds}</div>;
};
const WelcomeComponent = () => {
const [name, setName] = useState('');
const [greeting, setGreeting] = useState('');
const addToWelcome = () => {
setGreeting(`좋은 아침입니다. ${name}님`);
setName('');
};
const handleKeyPress = (event) => {
if (event.key === 'Enter') {
addToWelcome();
}
};
return (
<div id="welcome">
<input
id="nameInput"
type="text"
name="name"
placeholder="이름을 입력하세요"
value={name}
onChange={(event) => setName(event.target.value)}
onKeyPress={handleKeyPress}
/>
{/* input에서 value는 초기값을 설정한다. 단, 사용자가 직접 지우고 입력해야한다는 단점이 있다.
onChange는 input 안의 값이 변경될 때 발생한다. 실행시켜서 input에 글자를 적으면 setName안의 글자가 input안의 글로 바뀌게 된다. */}
<button onClick={addToWelcome}>입력</button>
<div id="greeting">{greeting}</div>
</div>
);
};
const ToDoList = () => {
const [tasks, setTasks] = useState([]);
const [inputValue, setInputValue] = useState('');
const addToList = () => {
if (inputValue.trim() !== '') {
setTasks((prevTasks) => [...prevTasks, inputValue]);
setInputValue('');
}
};
const handleKeyPress = (event) => {
if (event.key === 'Enter') {
addToList();
}
};
return (
<div id="to-do">
<input
type="text"
id="whatToDo"
name="whatToDo"
placeholder="할 일을 입력하세요"
value={inputValue}
onChange={(event) => setInputValue(event.target.value)}
onKeyPress={handleKeyPress}
/>
<button onClick={addToList}>추가</button>
<h2>오늘 할 일</h2>
<ul id="ToDoList">
{tasks.map((task, index) => (
<li key={index}>{task}</li>
))}
</ul>
</div>
);
};
const App = () => {
return (
<div>
<Background />
<Clock />
<WelcomeComponent />
<ToDoList />
</div>
);
};
export default App;