上拉加载更多及下拉刷新(Flatlist、SectionList

2018-08-28  本文已影响507人  6seaq

思路

代码

前端js界面

_onMore = () => {
        // 有更多数据且不是正在加载更多状态下,请求更多数据
        if (this.props.message.hasMore && !this.props.message.onMore) {
            const {action, navigation, message} = this.props;

            this.state.page = this.state.page + 1;
            this.state.loadType = PageConstant.more;

            let params = {
                page: this.state.page,
                loadType: this.state.loadType,
            };
            action.requestMyMessages(navigation, message.messageArray, params, this._onLoad);
        }
    };

_onRefresh = () => {
        if (!this.props.message.onRefresh) {
            const {action, navigation} = this.props;
            this.state.page = 1;
            this.state.loadType = PageConstant.refresh;

            let params = {
                page: 1,
                loadType: this.state.loadType,
            };
            action.requestMyMessages(navigation, [], params, this._onLoad)
        }
    };

reducer

case types.my.requestMyMessages:
          return {
              ...state,
              navigation: action.navigation,
              params: action.params,
              array: action.array,
              onRefresh: action.params.loadType === PageConstant.refresh,
              onMore: action.params.loadType === PageConstant.more,
              callback: action.callback,
          };
      case types.my.receiveMyMessages:
          return {
              ...state,
              onRefresh: false,
              onMore: false,
              hasMore: action.messageArray.length / PageConstant.pageSize === state.params.page,
              messageArray: action.messageArray,
              onSubmit: false,
          };
上一篇 下一篇

猜你喜欢

热点阅读