Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

260
Visualizações
Cómo agregar datos recién obtenidos a una matriz existente (Js, VueJs)

Tengo algo de paginación en una ruta Api que se usó para obtener los datos de la publicación.

Cuando la paginación está en la página 2, me gustaría agregar los datos obtenidos de la página y agregarlos a la matriz existente.

Función utilizada para obtener los datos.

 const posts = ref([]); const page = ref(1); const getPosts = async (page) => { await axios .get("/api/explore/gallery/?page=" + page) .then((response) => { if (page === 1) { posts.value = response.data; } else { posts.value = { ...posts.value, ...response.data }; } }); };

Entonces, cuando la página es 2 en adelante, los datos obtenidos se agregarán a la matriz existente.

El resultado si usé posts.value = { ...posts.value, ...response.data };

La identificación comienza desde 51 en lugar de 1 - 100.

La id comienza desde 51 en lugar de 1 - 100 .

También probé posts.value = [ ...posts.value, ...response.data ]; pero regresó

 PostApi.js:12 Uncaught (in promise) TypeError: Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method. at _nonIterableSpread (PostApi.js:12:39) at _toConsumableArray (PostApi.js:10:131) at eval (PostApi.js?c0c4:15:21)

response.data se ven así

ingrese la descripción de la imagen aquí

post.value ve así

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede hacer esto con un caché para proporcionar más control sobre la cantidad de datos que se acumulan en el cliente. Esta respuesta proporciona un caché LRU de aspecto razonable. Combinándolo con tu api podría verse así...

 const cache = new LRU(8); const getPosts = async (page) => { const result = cache.get(page); if (result) return Promise.resolve.result; return await axios .get("/api/explore/gallery/?page=" + page) .then((response) => { cache.set(page, response.data); return response.data; }); };

Su marcado mostraría el valor actual de las posts . Cualquier evento de usuario que active su paginación haría esto...

 // in an async method this.posts = await getPosts(pageComputedFromUI);

Esto tendría aproximadamente el mismo efecto que su solución (que almacena en caché todo y nunca expulsa nada), pero con el beneficio de mantener la memoria bajo su control, y a costa de más solicitudes de red.

about 4 years ago · Juan Pablo Isaza Relatório

0

He encontrado la solución,

 const getPosts = async (page) => { await axios .get("/api/explore/gallery/?page=" + page) .then((response) => { if (page === 1) { posts.value = response.data; } else { posts.value = { ...posts.value, data: [...posts.value.data, ...response.data.data], }; } }); };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda