Changed code according to requirements
This commit is contained in:
parent
e477179500
commit
6337befab6
19
src/App.jsx
19
src/App.jsx
|
@ -3,39 +3,40 @@ import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
|
||||||
import UserList from "./components/UserList";
|
import UserList from "./components/UserList";
|
||||||
import UserDetails from "./components/UserDetails";
|
import UserDetails from "./components/UserDetails";
|
||||||
import EditUser from "./components/EditUser";
|
import EditUser from "./components/EditUser";
|
||||||
import './styles.css'; // Importing the CSS file
|
import './styles.css';
|
||||||
|
|
||||||
|
const RouteWithProps = ({ Component, props }) => {
|
||||||
|
return <Component {...props} />;
|
||||||
|
};
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
const [users, setUsers] = useState([]);
|
const [users, setUsers] = useState([]);
|
||||||
|
|
||||||
// Load users from localStorage on component mount
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const storedUsers = JSON.parse(localStorage.getItem("users")) || [];
|
const storedUsers = JSON.parse(localStorage.getItem("users")) || [];
|
||||||
setUsers(storedUsers);
|
setUsers(storedUsers);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Save users to localStorage whenever they change
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
localStorage.setItem("users", JSON.stringify(users));
|
localStorage.setItem("users", JSON.stringify(users));
|
||||||
}, [users]);
|
}, [users]);
|
||||||
|
|
||||||
|
const sharedProps = { users, setUsers };
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Router>
|
<Router>
|
||||||
<Routes>
|
<Routes>
|
||||||
{/* User List Route */}
|
|
||||||
<Route
|
<Route
|
||||||
path="/"
|
path="/"
|
||||||
element={<UserList users={users} setUsers={setUsers} />}
|
element={<RouteWithProps Component={UserList} props={sharedProps} />}
|
||||||
/>
|
/>
|
||||||
{/* User Details Route */}
|
|
||||||
<Route
|
<Route
|
||||||
path="/user/:id"
|
path="/user/:id"
|
||||||
element={<UserDetails users={users} setUsers={setUsers} />}
|
element={<RouteWithProps Component={UserDetails} props={sharedProps} />}
|
||||||
/>
|
/>
|
||||||
{/* Edit User Route */}
|
|
||||||
<Route
|
<Route
|
||||||
path="/edit/:id"
|
path="/edit/:id"
|
||||||
element={<EditUser users={users} setUsers={setUsers} />}
|
element={<RouteWithProps Component={EditUser} props={sharedProps} />}
|
||||||
/>
|
/>
|
||||||
</Routes>
|
</Routes>
|
||||||
</Router>
|
</Router>
|
||||||
|
|
|
@ -5,19 +5,15 @@ const UserDetails = ({ users, setUsers }) => {
|
||||||
const { id } = useParams();
|
const { id } = useParams();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const userId = parseInt(id, 10); // Ensure id is a number
|
const userId = parseInt(id, 10);
|
||||||
const user = users.find((user) => user.id === userId);
|
const user = users.find((user) => user.id === userId);
|
||||||
|
|
||||||
const handleDelete = () => {
|
const handleDelete = () => {
|
||||||
console.log("Users before deletion:", users);
|
|
||||||
console.log("ID to delete:", userId);
|
|
||||||
|
|
||||||
const updatedUsers = users.filter((user) => user.id !== userId);
|
const updatedUsers = users.filter((user) => user.id !== userId);
|
||||||
console.log("Users after deletion:", updatedUsers);
|
setUsers([...updatedUsers]);
|
||||||
|
|
||||||
setUsers([...updatedUsers]); // Create a new reference
|
|
||||||
alert(`User with ID ${id} deleted.`);
|
alert(`User with ID ${id} deleted.`);
|
||||||
navigate("/"); // Redirect to home
|
navigate("/");
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
|
|
Loading…
Reference in a new issue