ant design List长列表下拉刷新 上拉加载更多

本文探讨了在Ant Design Mobile中使用ListView组件进行数据加载和滚动优化的方法。内容包括:设置`PullToRefresh`实现下拉刷新,利用`onEndReached`触发上拉加载更多数据,以及调整`onEndReachedThreshold`来优化滚动体验。同时,展示了如何定制渲染行和列表头部,以及处理数据源更新的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、html
	import styles from './index.less';
	import { ListView,List,PullToRefresh  } from 'antd-mobile';
	const Item = List.Item;
	const Brief = Item.Brief;
	const { theadData, data, total, currentPage, onSuccess, onSuccessEnter, isMore, showNum,refreshing } = props;
	<ListView
                dataSource={dataSource.cloneWithRows(data)}
                renderFooter={() => (<div style={{ padding: 10, textAlign: 'center' }}>
                    {isMore? '加载中...' : ''}
                </div>)}
                renderRow={(rowData, id1, i) => renderRow(rowData)}
                onEndReachedThreshold={20}
                onEndReached={onEndReached}
                useBodyScroll //useBodyScroll 跟随body滚动 不传必须给定容器的高度
                pullToRefresh={
                    <PullToRefresh
                        refreshing={refreshing}
                        onRefresh={onRefresh}
                    />
                }
   />
   <--渲染内容-->
   const dataSource = new ListView.DataSource({
        rowHasChanged: (row1: any, row2: any) => row1 !== row2,
    });
    const renderRow = (item: any) => {
        return (
            <List renderHeader={() => 'Align Vertical Center'} className="my-list">
                <Item multipleLine extra="extra content">
                    {item.title} <Brief>subtitle</Brief>
                </Item>
            </List>
        )
    };
    <--操作-->
    const onEndReached=()=>{
        let obj = {
      		currentPage: currentPage,
    	};
	    obj.currentPage++;
	    if (total / obj.currentPage > showNum) {
	      onSuccess({currentPage:obj.currentPage});
	    }
    }
    const onRefresh=()=>{
        onSuccess({refresh:true});
   }
2、style
	//当不传useBodyScroll 时 滚动区域高度屏幕高度-上面部分高度
	.am-list-view-scrollview {
      overflow: initial;
      height: calc(100vh - 2.14rem);
    }
    .am-list-view-scrollview-content {
      height: 100%;
    }
    .am-list-footer {
      padding: 0;
    }
### 关于 Ant Design Vue 中 `a-select` 组件下拉菜单的使用 #### 基本配置与属性设置 在 Ant Design Vue 中,`<a-select>` 是一个非常灵活的选择器组件。该组件不仅支持标准的下拉选项选择,还允许用户通过输入框自定义文本[^2]。 为了实现这一功能,在 HTML 部分需按照如下方式编写: ```html <a-select v-model:value="selectedValue" style="width: 120px"> <a-select-option value="jack">Jack</a-select-option> <a-select-option value="lucy">Lucy</a-select-option> </a-select> ``` 上述代码展示了如何创建带有两个预设项 (`Jack`, `Lucy`) 的简单 `<a-select>` 控件,并将其绑定到名为 `selectedValue` 的变量上用于双向数据绑定[^3]。 #### 支持搜索和自由输入模式 当希望让用户能够直接键入内容而非仅限于列表中的现有条目时,则应启用 `show-search` 属性以及指定 `filterOption={false}` 来关闭默认过滤逻辑;同时还可以利用 `optionLabelProp="children"` 让显示的内容更贴近实际需求: ```html <a-select showSearch optionLabelProp="children" :filterOption="false" v-model:value="inputText" placeholder="请输入..."> <!-- 可选地添加静态或动态生成的选项 --> </a-select> ``` 此段落介绍了如何使 `<a-select>` 成为可编辑的状态,即它既可以作为传统意义上的 dropdown list 工作,也能充当 text input box 的角色。 #### 动态加载远程数据源 对于大型应用而言,可能并不适合一次性加载全部可用选项至前端页面中。此时可以通过监听用户的输入事件来触发服务器端查询操作,并实时更新候选项目列表。这通常涉及到对 `notFoundContent` 和 `loading` 状态管理的支持。 ```javascript import { ref } from 'vue'; export default { setup() { const loading = ref(false); const options = ref([]); function fetchOptions(value) { // Simulate AJAX request delay. setTimeout(() => { loading.value = false; options.value = !value ? [] : [ { label: `${value}A`, value }, { label: `${value}B`, value } ]; }, 200); return ( <> <a-select mode="combobox" notFoundContent={loading && "Loading..."} onSearch={(val) => (loading.value=true,fetchOptions(val))} defaultValue="" style={{ width: 200 }} > {(options || []).map((opt) => (<a-select-option key={opt.value}>{opt.label}</a-select-option>) )} </a-select> </> ); } return { ... }; } ``` 这段 JavaScript/JSX 片段说明了怎样结合异步请求机制实现实时筛选效果,从而提高用户体验的同时减少不必要的网络流量消耗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值