Страница загружается неправильно, пока я не обновлю ее.JAVA

Программисты JAVA общаются здесь
Anonymous
Страница загружается неправильно, пока я не обновлю ее.

Сообщение Anonymous »

У меня есть приложение Jewlery Store, использующее React, и есть два типа пользователей: администратор и покупатель. Администратор имеет возможность увидеть таблицу со всеми пользователями и узнать, находится ли пользователь в сети или офлайн. Я сделал это, присвоив каждому клиенту активный атрибут, и когда кто-то успешно входит в систему, активный атрибут меняется на 1 (онлайн), в противном случае он становится 0 (офлайн). Та же идея, которую я использовал для выхода из системы.
Проблема в том, что изменение в активном столбце не загружается правильно, пока я не обновлю страницу с таблицей, она останется в последнем статусе, который у нее был, поэтому проблема в интерфейсе. и я не знаю точно, где.
Это страница входа:
import axios from "axios";
import React, { useState, useEffect } from "react";
import { Link, useNavigate } from "react-router-dom";

export default function Login() {
const navigate = useNavigate();
const [customer, setCustomer] = useState({
email: "",
password: "",
});

const [onlineusers, setOnline] = useState([]); // State to track online/offline status

useEffect(() => {
// Load online/offline status when component mounts
loadOnlineStatus();
}, []);

const { email, password } = customer;

const onInputChange = (e) => {
setCustomer({ ...customer, [e.target.name]: e.target.value });
};

const loadOnlineStatus = async () => {
// try {
const response = await axios.get("http://localhost:8080/customers");
setOnline(response.data);
// } catch (error) {
// console.error("Error loading online status:", error);
// }
};

const onSubmit = async (e) => {
e.preventDefault();

try {
const response = await axios.get(
`http://localhost:8080/customerEmail?ema ... ${password}`
);

const loggedInCustomer = response.data;

if (loggedInCustomer) {
console.log("Login successful:", loggedInCustomer);

await axios.put(`http://localhost:8080/customeron/${email}`);
loadOnlineStatus();

//stocare email
localStorage.setItem('loggedInEmail', email);
const role = await axios.get(
`http://localhost:8080/role?email=${emai ... ${password}`
);

if (role.data==="ADMIN") {
navigate("/admin");
} else {
navigate("/customer");
}
} else {
console.error("Login failed");
}
} catch (error) {
console.error("Error during login:", error);
}
};

return (



Log In

onSubmit(e)}>


E-mail

onInputChange(e)}
/>


Password

onInputChange(e)}
/>


Log In


Sign Up





);
}

Это моя страница онлайн-пользователей:
import React, { useEffect, useState } from "react";
import axios from "axios";
import { Link } from "react-router-dom";

export default function OnlineUsers() {
const [users, setUsers] = useState([]);

useEffect(() => {
loadUsers();
}, []);

const loadUsers = async () => {
const result = await axios.get("http://localhost:8080/customers");
setUsers(result.data);
};

return (





ID
Name
Username
Email
Online Activity



{users.map((user, index) => (


{index + 1}

{user.name}
{user.username}
{user.email}
{user.activ===0 ? "Offline" : "Online"}

))}



Back



);
}

Это функция контроллера, которая получает всех клиентов:
@GetMapping("/customers")
List getAllCustomers() {
return customerService.findAll();
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... -i-refresh

Вернуться в «JAVA»