RN setState 采坑小记
发布日期:2022-04-05 00:52:12 浏览次数:2 分类:博客文章

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

项目中我们基本上一直使用这个东东,一般我们用来刷新数据(刷新页面),下面来小记下这个小坑

一般对页面来说 我们如是使用

第一种写法 声明、初始化分开

// 1、声明 export interface IState {    bidBtnData: getBidButtonData,    bidBean: IBidDetailInfo,}export interface IProps extends IBasePageProp {}export default class extends UtilsRootPage
{//该方法 相当于constructor 初始化方法 subPageInit() {
// 2、初始化        this.state = {            bidBean: {} as IBidDetailInfo,            bidBtnData: {} as getBidButtonData,        }    } // 3、赋值
    this.setState({ bidBean: response.data })
 

第二种写法 直接声明、初始化

export default class CheckboxModalMenu extends React.Component
{ // 1、声明、初始化 state = { modalVisible: false, data: [], bidderIdList: [], }; // 2、使用
  this.setState({ data: res.data.rows });
 

小坑小记:setState是异步操作 所以出现赋值异常时 用方法2解决

let oData: any = this.state.data;                                let oNew: any = [];                                oData.map((fItem: any) => {                                    if (fItem.checkedflag) {                                        oNew.push(fItem.userId);                                    }                                  });                                // UtilsSuperCommon.logWarn(oNew);                                // oNew始终有值 第一次bidderIdList取不到值 第二次才有 这是因为setState是异步操作                                 // 所以用第二种写法 数据回来后再做操作                                // 1、                                // this.setState({                                //     bidderIdList: oNew,                                 // }                                //2、 该操作是异步操作                                this.setState({                                    bidderIdList: oNew,                                }, ()=> {                                    if (this.state.bidderIdList && this.state.bidderIdList.length) {                                        this.setModalVisible(false);                                        this.props.onClickDone(this, this.state.bidderIdList);                                    } else {                                        Toast.info('请选择中标人', 1)                                    }                                })                                // UtilsSuperCommon.logWarn(this.state.bidderIdList);

 

转载地址:https://www.cnblogs.com/lijianyi/p/11516410.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:RN state的五种取值方法
下一篇:RN 使用Radio实现多选

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月07日 16时30分18秒