Console.info в журнале массива useState Hook несколько раз после запроса GET с помощью Axios

У меня есть этот компонент React

import React, { useState, useEffect } from 'react';
import axios from "axios";
import "../../css/driversStandings.css";

function DriversStandingsComponent() {

    const [data, setData] = useState([]);
    var row = 1;

    useEffect(() => {
        axios.get("http://localhost:4000/api/standings").then(res => {
            const driversChampionshipData = res.data[0].DriversChampionship
            setData(driversChampionshipData);
            console.info(data)
        })
    });

    return (
          //Here I return a mdbootstrap table, mapping the data array
    )
}

export default DriversStandingsComponent;

Я не очень понимаю, почему это происходит, и влияет ли это на производительность сервера.

Любая идея для решения этой проблемы? Я даже не знаю, ошибка ли это сама 😅

Возможно, у вас установлен <React.StrictMode>, что приведет к двойному логированию только в процессе разработки. Но вы все равно должны снять свои console.infos перед производством.

pilchard 20.12.2020 13:17

Действительно, я поставил <React.StrictMode>. Спасибо за полезные данные, которых я не знал

Kevin Buguecio 20.12.2020 13:21
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Раскрытие чувствительных данных
Раскрытие чувствительных данных
Все внешние компоненты, рассмотренные здесь до сих пор, взаимодействуют с клиентской стороной. Однако, если они подвергаются атаке, они не...
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Руководство ChatGPT по продаже мини JS-файлов
Руководство ChatGPT по продаже мини JS-файлов
JS-файл - это файл, содержащий код JavaScript. JavaScript - это язык программирования, который в основном используется для добавления интерактивности...
1
2
235
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

UseEffect вызывается каждый раз при повторном рендеринге компонента. Вы должны добавить пустой массив зависимостей, таким образом, useEffect вызывается только тогда, когда компонент смонтирован, например:

   useEffect(() => {
        axios.get("http://localhost:4000/api/standings").then(res => {
            const driversChampionshipData = res.data[0].DriversChampionship
            setData(driversChampionshipData);
            console.info(data)
        })
    }, []);

Документы, подтверждающие этот ответ: reactjs.org/docs/…

Jake B. 20.12.2020 13:22

Другие вопросы по теме