Acerca de reaccionar de setstate asíncronos y síncronos

En primer lugar quiero grabar algunas de las cosas interesantes que se encuentran en el desarrollo de (O (∩_∩) O):

console.log(typeof ('' || null));
console.log(typeof (null || ''));
console.log(typeof (null && ''));
console.log(typeof ('' && null));
// 这个需要对逻辑运算符有一定的了解

function r(n, t) { 
   for (var r = -1, e = null == n ? 0 : n.length; ++r < e && false !== t(n[r], r, n);); 
   return n 
}
// 摘自lodash源码 需要对for循环和逻辑运算符有一定的了解(坏笑)

Introducidos, desarrollos recientes encontraron con una situación de este tipo:


this.setState({
    isLoading: true,
})
console.log(this.state.isLoading);// 输出为false

? ? ? No estoy establece en true todavía? La respuesta es porque es setstate operaciones asíncronas, el valor de la consola cuando el estado no ha cambiado si el código para leer:

this.setState({
    isLoading: true,
})
setTimeout(()=>{console.log(this.state.isLoading);},0)//输出为true

 También en este caso la consola cola asíncrona y en el setstate vuelta, lo hará verdadera salida. ¿Hay una manera más fácil de hacer eso? La respuesta es sí:

this.setState({
    isLoading: true,
},() => console.log(this.state.isLoading))// true
// setState接收第二个参数,表示当赋值完毕后进行的操作,即回调

 

terminado

Publicado 47 artículos originales · ganado elogios 38 · Vistas a 60000 +

Supongo que te gusta

Origin blog.csdn.net/qq8241994/article/details/103374062
Recomendado
Clasificación