Estaba revisando una base de código de reacción donde veo la función Promise llamando a setstate con 2 argumentos, no puedo descifrar exactamente cómo funciona esto, en todas partes he visto que se crea un setState con un argumento de objeto, pero aquí tenemos un argumento de resolución que obtiene un estado establecido con un objeto y una función de flecha que llama a resolver. La otra función de flecha, que no tengo idea de qué está haciendo y cómo funciona este código
esto es lo que tengo para el estado
constructor(props){ super(props); this.state = { articles:[], loading:true, page:1, totalResults : 0 } }Este es el código que tengo en mi base de código que tengo problemas para entender.
handleNextClick = async ()=>{ await new Promise(resolve => this.setState({page: this.state.page+1}, () => resolve())); // same as await this.setState({page: this.state.page+1}); await this.updateNews(); }Como puede ver, Promise está recibiendo la función de flecha de resolución que está llamando a setstate con un objeto y una función de flecha. ¿Puede alguien explicar cómo funciona esto exactamente?
El código no tiene mucho sentido, por lo que probablemente sea difícil de entender.
setState tiene una opción de devolución de llamada . Por lo tanto, no necesita una promesa y tampoco necesita esperar el setState. Además, probablemente tampoco necesite esperar updateNews para que pueda eliminar el asíncrono de la función handleNextClick .
Este es probablemente el aspecto que debería tener la función.
handleNextClick () { // Set the new state, then use the callback option // to call `updateNews` this.setState( { page: this.state.page + 1 }, () => { this.updateNews(); }); }