简体   繁体   English

React 给了我两倍的 API 结果

[英]React gives me twice the API result

my app in rect that consumes an api, works correctly but it doubles the result.我的矩形应用程序使用 api,工作正常,但结果加倍。 That is, it gives me the correct result but 2 times in a row.也就是说,它给了我正确的结果,但连续两次。 Are my first steps in REACT是我在 REACT 中的第一步吗

This is my REACT component:这是我的反应组件:

import React, { useEffect, useState, Fragment } from 'react';
// Importar cliente Axios
import clienteAxios from '../../config/axios';


function Clientes () {
    // Trabajar con el State
    // clientes = State
    // guardarClientes = Funcion para guardar el State
    const [clientes, guardarClientes] = useState({});


    //Query a la API
    const consultarAPI = async() => {
        // console.log('Consultando...');
        const clientesConsulta = await clienteAxios.get('/clientes');
        // console.log(clientesConsulta.data.clientes);

        // Colocar el resultado en el State
        guardarClientes(clientesConsulta.data.clientes);
    }

    //  Use effect es similar a componentdidmount y willmount
    useEffect( () => {
        consultarAPI();
    }, [] );


    function createArray(clientes) {
        if (clientes && clientes.length > 0) {
          return clientes.forEach(cliente => console.log(cliente)
          );
        }
        return [];
      }




    return (
        <Fragment>
            <h2>Clientes</h2>
            {/* {console.log(clientes)} */}
            {/* {console.log(guardarClientes)} */}

            <ul className="listado-clientes">
                {createArray(clientes)}
            </ul>
        </Fragment>
    )
}

export default Clientes;

The code works very well but in the terminal it gives me 2 times the same.该代码运行良好,但在终端中它给了我 2 倍。 Thank you very much in advance非常感谢您提前

Try to move the api call function inside the useEffect hook, like this:尝试将 api 调用 function 移动到 useEffect 挂钩中,如下所示:

 import React, { useEffect, useState, Fragment } from 'react'; // Importar cliente Axios import clienteAxios from '../../config/axios'; function Clientes () { // Trabajar con el State // clientes = State // guardarClientes = Funcion para guardar el State const [clientes, guardarClientes] = useState({}); // Use effect es similar a componentdidmount y willmount useEffect( () => { //Query a la API const consultarAPI = async () => { const clientesConsulta = await clienteAxios.get('/clientes'); // Colocar el resultado en el State guardarClientes(clientesConsulta.data.clientes); } consultarAPI(); }, [] ); function createArray(clientes) { if (clientes && clientes.length > 0) { return clientes.forEach(cliente => console.log(cliente) ); } return null; // <-- Change to return null if no clients are present. } return ( <Fragment> <h2>Clientes</h2> <ul className="listado-clientes"> {createArray(clientes)} </ul> </Fragment> ) } export default Clientes;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM