Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

190
Views
Entendiendo el método setState de React

Entiendo que el siguiente código agrega un nuevo objeto a una matriz de objetos pero es confuso en una sintaxis específica: setProductList([array, obj])

Por lo que veo, la función setProductList toma un objeto. Ese objeto consta de una matriz y un objeto. Entonces, ¿cómo agrega el objeto a la matriz? ¿Está esto integrado en JS o React?

 // array of products const Products = [ { item: "basketball", price: 3, description: "basketball desc", }, { item: "football", price: 5, description: "football desc", }, ]; // setting state const [productList, setProductList] = useState(Products); // handling click const handleClick = () => { // Don't quite understand the syntax of below block setProductList([ ...productList, // spread creates a copy of the array { item: "baseball", price: 4, description: "baseball desc", }, ]); };
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Lo que estás viendo es el operador Spread (...)

La sintaxis extendida se puede utilizar cuando todos los elementos de un objeto o matriz deben incluirse en una lista de algún tipo .

Al escribir [ (element inside) ] , creó una nueva matriz. ...productList solo no crea una nueva matriz

Podrías entender ...productList ya que te ayuda a escribir código más corto, en lugar de escribir así

 setProductList([ productList[0], productList[1], // ... productList[productList.length - 1], { item: "baseball", price: 4, description: "baseball desc", }, ])

Otro ejemplo que podría ayudarlo a comprender el operador de propagación es el uso de Math.max . Básicamente, la sintaxis de Math.max es Math.max(value0, value1, ... , valueN) .

Por ejemplo, tiene una matriz de N elementos, porque Math.max únicamente no puede tomar una matriz como argumentos, por lo que para calcular el máximo de la matriz, puede iterar cada elemento y comparar

 const arr = [1, 3, 2] let max = -Infinity for (const num of arr) { max = Math.max(max, num) } console.log(max)

Pero ahora con el operador de propagación, podría lograr el mismo resultado de una manera más corta

 const arr = [1, 3, 2] let max = Math.max(...arr) console.log(max)

about 4 years ago · Juan Pablo Isaza Report

0

Esta característica está integrada en js y se llama Extensión de objetos

Ejemplo

 var x = [1, 2] // an array console.log(x) // spreads an array, and put an extra element var y = [...x, 6] console.log(y)

entonces, el enlace de estado devuelve una función aquí: setProductList Eso solo actualiza el estado a la nueva matriz.

es una práctica común. Vea esta respuesta detallada para una explicación detallada

about 4 years ago · Juan Pablo Isaza Report

0

Ok, el código que no entiendes básicamente está configurando una nueva copia de la matriz actual, PERO incluyendo el nuevo elemento (sería como insertar un nuevo elemento en la matriz. PERO empujar modificaría la matriz original. En este caso, está haciendo una copia y empujando el valor a esa nueva matriz)

Vamos línea por línea. Tenemos:

 setProductList([ ...productList, { item: "baseball", price: 4, description: "baseball desc", }, ]);

Definiremos:

 setProductList([ // Line 0 ...productList, // Line 1 { // Line 2 item: "baseball", // Part of Line 2 price: 4, // Part of Line 2 description: "baseball desc", // Part of Line 2 }, // Part of Line 2 ]); // Part of Line 1(]) & 0())
  • Con la Línea 0 ( setProductList ) estamos configurando un nuevo valor para productsList porque reacciona y usaEstado. ( https://reactjs.org/docs/hooks-state.html )
  • Con la Línea 1 estamos creando una nueva copia de la matriz ([...oldArray]) devolverá una copia de la matriz anterior (Puede leer: https://developer.mozilla.org/en-US/docs/Web /JavaScript/Referencia/Operadores/Spread_syntax )
  • Con la Línea 2, estamos incluyendo un nuevo valor al final de la nueva matriz.
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!