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

142
Visualizações
Pérdida de valor de estado después de que finaliza la función

Soy nuevo en el concepto de reacción, no entiendo por qué pierdo el valor del estado después de .then() Pierdo el valor del estado ISPList pero configuré el estado :( agradezco cualquier ayuda.

 export default class Cartable extends React.Component<IMainCartableProps, ICartableState> { constructor(props: IMainCartableProps, state: ICartableState) { super(props) this.state = { status: "Ready", ISiteCollections: [], ISPLists:[], ISPTaskItems:[], } } public _getListOfLists(context: WebPartContext): Promise<ISPLists[]> { this.state.ISiteCollections.map(async (siteCollection:any)=>{ let url = siteCollection.SPSiteUrl + `/forms/_api/web/lists? $filter=Hidden eq false and BaseTemplate eq 107`; //console.log(url) let config: SPHttpClientConfiguration = new SPHttpClientConfiguration({ defaultODataVersion: ODataVersion.v3}) new Promise<ISPLists[]>( async (resolve, reject)=>{ this.props.context.spHttpClient.get(url, config, { headers: { Accept: "application/json;odata=minimalmetadata;charset=utf-8" }}) .then((response: SPHttpClientResponse) => { //console.log(response.status) if(response.status==200){ response.json().then((results: any) => { //let resultsList = results.PrimaryQueryResult.RelevantResults.Table.Rows; console.log(results) results.value.map((result:any)=>{ TaskLists.push({ title: result.Title, Id:result.Id }) }) //console.log(TaskLists.length) //this.setState({ ISPLists:TaskLists }) //console.log(this.state.ISPLists.length) //resolve(TaskLists); this.setState({ISPLists:TaskLists}) //this.setState({ ISPLists:TaskLists}) //console.log(this.state.ISPLists[1].title) //this._getTaskItems() }) } // return response.json(); console.log(TaskLists.length) }) }) }) console.log(TaskLists.length) console.log("Hereeeee") this.state.ISPLists.map(SPList=>{ console.log(SPList.title) }) return }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Hay muchas cosas mal con este código.

  1. Está utilizando un método de mapa, no devuelve nada y agrega operaciones asíncronas
  2. this.setState reemplaza el estado existente, no fusiona su nuevo estado con el estado existente

Solución:

  1. Si solo necesita recorrer ISiteCollections y enviar solicitudes de API, simplemente use forEach o for loop para recorrer la matriz
  2. Para fusionar su nuevo estado con el estado existente, use el operador de propagación es6. this.setState({ispLists:[...this.state.ispLists , ...TaskLists ]})
about 4 years ago · Juan Pablo Isaza Relatório

0

No estoy seguro de su problema, ya que no estoy trabajando con React durante mucho tiempo, pero en cuanto a la depuración de esto: 1: Cree un archivo console.log para ISPLists justo después de setState para asegurarse de que el valor se haya configurado correctamente. 2: asegúrese de recorrerlo después de setState (ya que no encontré ningún async/await en su código).

Para una forma más limpia: cree una función separada para el valor setState ISPList para tener más flexibilidad y facilitar la depuración. Esto realmente podría ayudar a depurarlo.

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