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

224
Visualizações
No se pueden copiar los datos del modelo mst de un modelo a otro

Estoy tratando de crear una aplicación de noticias que pueda recibir la respuesta de la API de noticias y almacenarla en newsFeed y luego el usuario puede marcar algunas noticias como favoritas y luego almacenar estas favoritas en el nuevo modelo favorito.

este es el error que estoy recibiendo

Error: [mobx-state-tree] No se puede agregar un objeto a un árbol de estado si ya forma parte del mismo u otro árbol de estado. Intenté asignar un objeto a '/newsStore/favorite/0', pero ya vive en '/newsStore/newsFeed/0', motor js: hermes aquí está mi modelo de noticias

 export const NewsModel = types .model('News') .props({ newsFeed: types.array(News), favorite: types.array(News), totalResults: types.maybeNull(types.number), newsUserTask: types.optional(AsyncTask, {}), })

así es como llamo a la API y la almaceno en NewsFeed

 .actions(self => { const newsCall = (page: number, feed: boolean) => runTask(self.newsUserTask, function* ({ exec }) { const result = yield* toGenerator( self.environment.baseApi.newsFeed(page), ); exec(() => { if ((result as NewsTypeResponse).status === 'ok') { if (self.newsFeed.length) { if (page < Math.ceil(self.totalResults / 10)) { self.newsFeed = castToSnapshot([ ...self.newsFeed, ...(result as NewsTypeResponse).articles, ]); } else { self.rootStore.errorStore.setError( translate('errors.endOfPage'), ); } self.newsFeed = castToSnapshot([ ...self.newsFeed, ...(result as NewsTypeResponse).articles, ]); } else { if (feed) { self.totalResults = castToSnapshot( (result as NewsTypeResponse).totalResults, ); self.newsFeed = castToSnapshot( (result as NewsTypeResponse).articles, ); } else { self.newsData = castToSnapshot( (result as NewsTypeResponse).articles, ); } console.log('load more working'); } console.log('working'); } else { console.log('not working'); } }); }); return { newsCall }; })

y así es como estoy tratando de almacenar en favoritos

 .actions(self => ({ setFav(item: NewsTypes) { self.favorite.push(item); }, }))

¿Cómo puedo hacer esto? Intenté seguir algunas soluciones como esta. No se puede agregar un objeto a un árbol de estado si ya es parte del mismo u otro árbol de estado.

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

0

En su lugar, puede modelar su matriz favorite para que sea una matriz de referencias a News y simplemente agregar el identificador a esta matriz en la acción setFav (siempre que su modelo de News tenga types.identifier o types.identifierNumber ). Puede encontrar más información sobre estos conceptos aquí .

 export const NewsModel = types .model('News') .props({ newsFeed: types.array(News), favorite: types.array(types.reference(News)), totalResults: types.maybeNull(types.number), newsUserTask: types.optional(AsyncTask, {}), }) .actions(self => ({ setFav(item: NewsTypes) { self.favorite.push(item.id); }, }));
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