美文网首页RN知识React Native学习
RN-this.setState异步问题

RN-this.setState异步问题

作者: 精神病患者link常 | 来源:发表于2017-09-06 10:37 被阅读634次
this.setState({
    plateNumber: '123456',
});
console.log(this.state.plateNumber); ------>null

总会遇到给state设置值后,马上就会用到state里面的值的情况
但是setState是异步的,就会导致用的时候还没有被set成功

一、在群里偶然看到一种写法

this.setState({
  plateNumber:'123456',
}, () => {
  console.log(this.state.plateNumber); 
})

很是好奇,竟然还可以这么写的,马上就在网上查了查,666

F19F49CB-35CD-42B7-AB2E-0E6605FA33AE.png

二、当然还有第二种方法,使用 InteractionManager.runAfterInteractions

this.setState({
    plateNumber: '123456',
});
InteractionManager.runAfterInteractions(() => {
     console.log(this.state.plateNumber);
});

setState可能会引发不必要的渲染(renders)

因为只要setState了,React就去作整个视图的重新渲染,有可能state的值只是记录并不在页面上显示,还是会走render方法,造成不必要的渲染,对性能有一定的影响
这个时候就会用到 shouldComponentUpdate 了

shouldComponentUpdate(nextProps, nextState) 提供两个参数,返回true或者false

返回true,则重新渲染
返回false,则不渲染

所以就可以在这个方法中对比当前的state的值和nextState的值,或者判断nextState的值来返回true或者false,决定要不要重新渲染

相关文章

  • RN-this.setState异步问题

    总会遇到给state设置值后,马上就会用到state里面的值的情况但是setState是异步的,就会导致用的时候还...

  • 异步问题

    什么是异步 两个请求同时开始,但是二者之间有赋值比较之类的关系时,称为异步

  • * 异步问题

    useEffect(()=>{console.log('effect: ' + requesting);},[re...

  • 异步问题

    什么是回调地狱(函数作为参数层层嵌套)回调函数(一个函数作为参数需要依赖另一个函数执行调用)如何解决回调地狱 pr...

  • JavaScript之异步概述

    1,异步(什么是异步,异步出现的原因,异步解决的问题,如何实现异步,什么时候需要异步模式。) JavaScript...

  • ES6 同步和异步、Promise

    一.同步与异步 1. Promise作用:解决异步回调的问题 二.Promise对象 目的:创建异步对象,当异步对...

  • 小程序里使用async和await变异步为同步,解决回调地狱问题

    最近好多同学,学习完石头哥的云开发基础以后,自己实际项目中,总会遇到各种各样的异步问题。 一,异步问题 所谓异步:...

  • 异步问题处理

    1.通过立即执行函数解决异步问题

  • js 异步问题

    异步的概念 js的异步的概念的起因为js是单线程语言,一次只能同时做一件事。js和dom渲染公用同一个线程,因为j...

  • 04-Node 异步编程

    Node 异步编程同步方法和异步方法异步 API 的执行顺序异步编程回调地狱问题Promise 改造回调地狱代码a...

网友评论

    本文标题:RN-this.setState异步问题

    本文链接:https://www.haomeiwen.com/subject/soymjxtx.html