加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

RN setState 采坑小记

发布时间:2020-12-14 05:07:10 所属栏目:大数据 来源:网络整理
导读:项目中我们基本上一直使用这个东东,一般我们用来刷新数据(刷新页面),下面来小记下这个小坑 一般对页面来说 我们如是使用 第一种写法 声明、初始化分开 // 1、声明 export interface IState { bidBtnData: getBidButtonData,bidBean: IBidDetailInfo,}export

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

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

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

// 1、声明
export interface IState { bidBtnData: getBidButtonData,bidBean: IBidDetailInfo,} export interface IProps extends IBasePageProp { }
export default class extends UtilsRootPage<IProps,IState> { //该方法 相当于constructor 初始化方法

subPageInit() {
// 2、初始化
        this.state = {
            bidBean: {} as IBidDetailInfo,bidBtnData: {} as getBidButtonData,}

    }
// 3、赋值
? ? this.setState({?bidBean:?response.data?})
?

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

export default class CheckboxModalMenu extends React.Component<IProps> {
// 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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读