es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de React, no encuentro una solución a este error, ¿qué podría estar mal, por qué se está lanzando esta excepción?

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown Soy nuevo en React, perdón por esta pregunta estúpida. Recibo el error:

Uncaught TypeError: los productos no son iterables

Si creo una matriz separada (myArray) y la paso a setProducts, esto funciona, pero el bucle no cuando llamo a setProducts en cada pasada. ¿No se permite useState() dentro de un bucle for?

const [productos, setProductos] = useState([]);

let myArr = [];
function seleccionarProductos() {
    for (let i = 0; i < 4; i++) {
        let rand = Math.floor(Math.random() * jsData.length + 1);
        let item = jsData[rand];

        //myArr.push(item);
        setProductos([...productos, item]);
    }
    //setProductos(myArr);
    console.log(productos);
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás tratando de usar setProducts dentro de un bucle for. Esto no está permitido ya que setProducts es asíncrono y no se llamará hasta que el bucle for haya terminado.

    Puedes usar el operador “spread” para agregar los elementos al array products uno por uno.

    let myArr = [];
    function selectProducts() {
        for (let i = 0; i < 4; i++) {
            let rand = Math.floor(Math.random() * jsData.length + 1);
            let item = jsData[rand];
    
            //myArr.push(item);
            setProducts([...products, item]);
        }
        //setProducts(myArr);
        console.log(products);
    }
    

Comments are closed.