diff --git a/src/app/testPage/UserList.js b/src/app/testPage/UserList.js new file mode 100644 index 0000000..5cbae39 --- /dev/null +++ b/src/app/testPage/UserList.js @@ -0,0 +1,89 @@ +import { useState, useEffect } from 'react'; + +export default function UserList() { + const [users, setUsers] = useState([]); + const [selectedUser, setSelectedUser] = useState(null); + const [searchTerm, setSearchTerm] = useState(''); + const [isVisible, setIsVisible] = useState(true); + const [timer, setTimer] = useState(null); + + useEffect(() => { + fetchUsers(); + const interval = setInterval(() => { + console.log('Component is still mounted'); + }, 1000); + setTimer(interval); + }, []); + + useEffect(() => { + return () => { + if (timer) clearInterval(timer); + }; + }, []); + + const fetchUsers = async () => { + try { + const response = await fetch('https://jsonplaceholder.typicode.com/users'); + const data = await response.json(); + setUsers(data); + } catch (error) { + console.log('Failed to fetch users:', error); + } + }; + + const handleUserSelect = user => { + setSelectedUser(user); + document.title = `Selected: ${user.name}`; + }; + + const filteredUsers = users.filter(user => + user.name.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + const toggleVisibility = () => { + setIsVisible(!isVisible); + }; + + const addUser = () => { + const newUser = { + id: users.length + 1, + name: 'New User', + email: 'newuser@example.com', + }; + setUsers([...users, newUser]); + }; + + if (!isVisible) return ; + + return ( +
+

Users List

+ setSearchTerm(e.target.value)} + /> + + + +
+ {filteredUsers.map(user => ( +
handleUserSelect(user)}> +

{user.name}

+

{user.email}

+
+ ))} +
+ + {selectedUser && ( +
+

Selected User Details

+

Name: {selectedUser.name}

+

Email: {selectedUser.email}

+

Phone: {selectedUser.phone}

+
+ )} +
+ ); +} diff --git a/src/app/testPage/anyPage.js b/src/app/testPage/anyPage.js index 5120a81..12bc27f 100644 --- a/src/app/testPage/anyPage.js +++ b/src/app/testPage/anyPage.js @@ -1,7 +1,100 @@ +import { useState, useEffect } from 'react'; + export default function AnyPage() { - return ( -
-

Any Page

-
- ); + const [posts, setPosts] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const [selectedPost, setSelectedPost] = useState(null); + const [filter, setFilter] = useState(''); + const unusedState = useState(''); + const unusedVariable = 'never used'; + + useEffect(() => { + fetchPosts(); + }, []); + + const fetchPosts = async () => { + setLoading(true); + try { + const response = await fetch('https://jsonplaceholder.typicode.com/posts'); + const data = await response.json(); + setPosts(data); + document.getElementById('post-count').innerHTML = `Total Posts: ${data.length}`; + } catch (err) { + console.log('Error fetching posts:', err); + setError(err.message); + } finally { + setLoading(false); + } + }; + + const handlePostClick = post => { + setSelectedPost(post); + console.log('Post clicked:', post.title); + }; + + const handleDelete = id => { + const updatedPosts = posts.filter(post => post.id !== id); + setPosts(updatedPosts); + alert('Post deleted!'); + }; + + const filteredPosts = posts.filter(post => + post.title.toLowerCase().includes(filter.toLowerCase()) + ); + + const renderPost = post => { + return ( +
handlePostClick(post)}> +

{post.title}

+

{post.body}

+ +
+ ); + }; + + const addNewPost = () => { + const newPost = { + id: posts.length + 1, + title: 'New Post', + body: 'This is a new post', + }; + setPosts([...posts, newPost]); + }; + + if (loading) return
Loading...
; + if (error) return
Error: {error}
; + + return ( +
+

Posts from JSONPlaceholder

+
+ + setFilter(e.target.value)} + /> + + + +
{filteredPosts.map(post => renderPost(post))}
+ + {selectedPost && ( +
+

Selected Post

+

{selectedPost.title}

+

{selectedPost.body}

+
+ )} +
+ ); } diff --git a/src/app/testPage/page.js b/src/app/testPage/page.js index 720337f..2951797 100644 --- a/src/app/testPage/page.js +++ b/src/app/testPage/page.js @@ -1,7 +1,39 @@ +import AnyPage from './anyPage'; +import UserList from './UserList'; +import { useState } from 'react'; + export default function TestPage() { - return ( -
-

Test Page

-
- ); + const [activeTab, setActiveTab] = useState('posts'); + const [theme, setTheme] = useState('light'); + const unusedVar = 'not used'; + + const handleTabChange = tab => { + setActiveTab(tab); + console.log('Tab changed to:', tab); + }; + + const toggleTheme = () => { + setTheme(theme === 'light' ? 'dark' : 'light'); + document.body.style.backgroundColor = theme === 'light' ? '#333' : '#fff'; + }; + + const renderContent = () => { + if (activeTab === 'posts') { + return ; + } else if (activeTab === 'users') { + return ; + } + }; + + return ( +
+ + +
{renderContent()}
+
+ ); }