博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
reactnative state更新问题
阅读量:5234 次
发布时间:2019-06-14

本文共 1461 字,大约阅读时间需要 4 分钟。

官网说明:

setState() enqueues changes to the component state and tells React that this component and its children need to be re-rendered with the updated state. This is the primary method you use to update the user interface in response to event handlers and server responses.

Think of setState() as a request rather than an immediate command to update the component. For better perceived performance, React may delay it, and then update several components in a single pass. React does not guarantee that the state changes are applied immediately.

setState() does not always immediately update the component. It may batch or defer the update until later. This makes reading this.state right after calling setState() a potential pitfall. Instead, use componentDidUpdate or a setState callback (setState(updater, callback)), either of which are guaranteed to fire after the update has been applied. If you need to set the state based on the previous state, read about the updater argument below.

 

RN中的setState并不是立即执行的,事实上可以看成是一个request,类似一个异步执行方法。这就会造成在程序执行过程state并不一定是最新的,解决的方法与处理异步程序类似,在异步方法执行完之后再执行后续的方法,如:

setClassId(newid){        this.setState({      activeClassId:newid,         },()=>{      return this.fetchData();//下一步要执行的方法    })             };

如果使用下面这种方式,fetchData并不能获得最新的state

setClassId(newid){        this.setState({      activeClassId:newid        });      this.fetchData();//下一步要执行的方法                };

 

转载于:https://www.cnblogs.com/aoooo/p/6781646.html

你可能感兴趣的文章
JavaScript 鸭子模型
查看>>
SQL Server 如何查询表定义的列和索引信息
查看>>
GCD 之线程死锁
查看>>
NoSQL数据库常见分类
查看>>
一题多解 之 Bat
查看>>
Java 内部类
查看>>
{面试题7: 使用两个队列实现一个栈}
查看>>
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
Apache Common-IO 使用
查看>>
评价意见整合
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>
系统的横向结构(AOP)
查看>>
linux常用命令
查看>>
NHibernate.3.0.Cookbook第四章第6节的翻译
查看>>
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>