Реагируйте, больше не извлекая данные

#reactjs #spring-boot #hibernate #react-hooks #react-router

Вопрос:

Привет я довольно новый, чтобы реагировать, и я пытаюсь создать студенческие управления приложение с помощью React в качестве frontend и я не могу показаться, чтобы получить страницу, чтобы получить список студентов, поскольку я пробовал работать с функциями useHistory и useNavigate с реагировать-маршрутизатор-дом, чтобы попытаться перенаправить на отдельного ученика компонент, но я не смог заставить их работать в моем проекте, поэтому я удалил их.

Страница отображала объекты учащихся из внутреннего API, который я создал, просто отлично, прежде чем я попытался реализовать две функции, но теперь не будет отображаться ни один объект учащихся, отображаются только заголовки таблиц, но не строки таблицы. Любая помощь в решении проблемы будет признательна

вот мой компонент hook для извлечения данных перед использованием useHistory amp; useNavigate

 function GetAllStudents() {
  const [students, setStudents] = useState([]);
  const fetchData = async () => {
    StudentService.getStudents() //axios service function used to fetch data
      .then((res) => res.json())
      .then((res) => {
        const currentStudent = res.data;
        setStudents(currentStudent); // try setStudents(res.data) if fails
      })
      .catch((err) => {
        console.log(err);
      });
    // fetchData();
  };

  useEffect(() => fetchData(), []);

  return (
    <div class="container">
      <div class="form container p-4">
        <h1>Week 10 - React Frontend </h1>
        <a href="/add" class="btn btn-success">
          Add Student
        </a>
      </div>

      <table class="table table-bordered">
        <thead>
          <tr>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Email</th>
            <th>Actions</th>
          </tr>
        </thead>
        <tbody>
          {students.map((student) => (
            <tr key={student.id}>
              <td> {student.firstname} </td>
              <td> {student.lastname}</td>
              <td> {student.email}</td>
              <td>
                <button className="btn btn-info">Edit</button>
                <button
                  style={{ marginLeft: '10px' }}
                  className="btn btn-danger"
                  onclick="return confirm('Do you Really want to delete')">
                  Delete{' '}
                </button>
              </td>
            </tr>
          ))}
        </tbody>
      </table>
    </div>
  );
}

export default GetAllStudents;
 

Когда я проверяю элементы в своем браузере, он показывает, что состояние не сохраняет объекты в массиве Журнал консоли реагирования компонента

Я не знаю, что я неправильно настроил, потому что даже когда я меняю функцию на компонент класса, который также ранее работал правильно, объекты больше не отображаются

 import React, { Component } from 'react';
import StudentService from '../services/StudentService';

class GetAllStudents extends Component {
  constructor(props) {
    super(props);

    this.state = {
      students: [],
    };
    this.addStudent = this.addStudent.bind(this);
    this.editStudent = this.editStudent.bind(this);
    this.deleteStudent = this.deleteStudent.bind(this);
  }

  deleteStudent(id) {
    StudentService.deleteStudent(id).then((res) => {
      this.setState({
        students: this.state.students.filter((student) => student.id !== id),
      });
    });
  }
  updateStudent(id) {
    this.props.history.push(`/students/${id}`); // props(parameter) to navigate to edit student component
  }
  editStudent(id) {
    this.props.history.push(`/edit/${id}`); // props(parameter) to navigate to edit student component
  }

  componentDidMount() {
    StudentService.getStudents().then((res) => {
      this.setState({ students: res.data }); //loads all students in database
    });
  }

  addStudent() {
    this.props.history.push('/add'); //function to navigate to edit student component with form to add student
  }

  render() {
    return (
      <div class="container">
        <div class="form container p-4">
          <h1>Week 10 - React Frontend </h1>
          <a href="/add" class="btn btn-success">
            Add Student
          </a>
        </div>

        <table class="table table-bordered">
          <thead>
            <tr>
              <th>First Name</th>
              <th>Last Name</th>
              <th>Email</th>
              <th>Actions</th>
            </tr>
          </thead>
          <tbody>
            {this.state.students.map((student) => (
              <tr key={student.id}>
                <td> {student.firstname} </td>
                <td> {student.lastname}</td>
                <td> {student.email}</td>
                <td>
                  <button
                    onClick={() => this.updateStudent(student.id)}
                    className="btn btn-info">
                    Edit
                  </button>
                  <button
                    style={{ marginLeft: '10px' }}
                    onClick={() => this.deleteStudent(student.id)}
                    className="btn btn-danger"
                    onclick="return confirm('Do you Really want to delete')">
                    Delete{' '}
                  </button>
                </td>
              </tr>
            ))}
          </tbody>
        </table>
      </div>
    );
  }
}

export default GetAllStudents;
 

когда я проверяю свой сервер, он показывает, что на сервер поступают вызовывведите описание изображения здесь, но react не извлекает и не отображает данные

любая помощь в решении этой проблемы была бы признательна, так как в настоящее время я не знаю, что я сделал не так

Комментарии:

1. Каков ответ от вызова StudentService.getStudents ()? это возвращает то, что вы ожидали?

2. @ShatteredDev большое спасибо, я запросил свою базу данных(mysql) и обнаружил, что все объекты были удалены…хотя я не знаю, как(мне придется найти причину, если проблема не устранится) Теперь он работает, в настоящее время я не могу добавлять новые объекты для учащихся через интерфейс, но я думаю, что смогу перенастроиться для работы. Я опубликую вопрос, если мне не удастся заставить его работать