当前位置: 首页 > news >正文

React 列表页实现

一、介绍

        列表页是常用的功能,从后端获取列表数据,刷新到页面上。开发列表页需要考虑以下技术要点:1.如何翻页;2.如何进行内容搜索;3.何时进行页面刷新。

二、使用教程

1.user-service

根据用户id获取用户列表,返回的state包括列表响应,加载状态,请求错误等信息。

const useFetchUserList = () => {// useRequest Hookconst [state, doRequest] = useRequest();// useAuth hookconst [user] = useAuth(); // 发起请求const fetch = (userId, page, pageSize) => doRequest('http://vicyor.com/user/'+userId, {page:page,pageSize:pageSize},{authorization:user.token}, 'POST' );// 返回结果return {state, fetch}
}

demo

export const ListPage = () =>{const [search, setSearch] = useState('');const [page, setPage] = useState(1); const [pageSize, setPageSize] = useState(10);const [state, fetch] = useFetchUserList();const handleSearch = keyword => fetch(keyword, page, pageSize);useEffect( () => {fetch('', 1, pageSize);},[])    return (<><div><h2>User List</h2><Input.Searchvalue={search}onChange={e => setSearch( e.target.value )}onSearch={handleSearch}/><TabledataSource={state.data}columns={getColumns()}rowKey="id"loading={state.isLoading}error = {state.error}pagination={true}/><Paginationcurrent={page}total={state.total}update = {setPage, setPageSize}/></div></>);}

2. province-city-service

省份和城市服务,选择省份后选择对应的城市

const useProvinceAndCity = () => {const [fetchProvince, provincesState] =  useRequest('http://vicyor.com/province/list',{},{},'GET');const [fetchCitys, citysState] = useRequest('http://vicyor.com/' + province + '/cityes', {}, {}, 'POST');return {fetchProvince, fetchCitys, provincesState, citysState};}

demo


const CitySelector = () => {const [selectedProvince, setSelectedProvince] = useState('');const [selectedCity, setSelectedCity] = useState('');const [fetchProvince, fetchCitys, provincesState, citysState] = useProvinceAndCitys();// 初始加载所有省份useEffect(() => {fetchProvince();},[])const handleProvinceChange = (e) => {setSelectedProvince(e.target.value);// 加载所有城市fetchCitys(selectedProvince);};const handleCityChange = (e) => {setSelectedCity(e.target.value);};return (<div><select value={selectedProvince} onChange={handleProvinceChange}><option value ="">请选择省份<option>provincesState.res && provincesState.res.map(province => <option value= {province.name}>{province.name}</option>)</select><select value={selectedCity} onChange={handleCityChange}><option value="">请选择城市</option>citysState.res && citysState.res.map(city => <option value = {city.name}>{city.name}</city></select></div>);
};

http://www.lryc.cn/news/259194.html

相关文章:

  • 【程序人生】还记得当初自己为什么选择计算机?
  • 9-tornado-Template优化方法、个人信息案例、tornado中ORM的使用(peewee的使用、peewee_async)、WTForms的使用
  • IDEA中.java .class .jar的含义与联系
  • 北斗三号短报文森林消防应急通信及天通野外图传综合方案
  • js Array.every()的使用
  • 前端编码中快速填充内容--乱数假文
  • 数据结构二维数组计算题,以行为主?以列为主?
  • springboot(ssm电影院订票信息管理系统 影院购票系统Java系统
  • AI 问答-供应链管理-相关概念:SCM、SRM、MDM、DMS、ERP、OBS、CRM、WMS...
  • 初学vue3与ts:vue3选项式api获取当前路由地址
  • 2023最新大模型实验室解决方案
  • leetcode707.设计链表
  • 【K8s】Kubernetes CRD 介绍(控制器)
  • Python 小程序之PDF文档加解密
  • 使用python脚本一个简单的搭建ansible集群
  • 【价值几十万的仿抖音直播电商系统源码共享】
  • 对于vue3项目中使用shareReward还是shareReward.value的问题
  • 利用websockify将websocket通信转换成tcp
  • 【LeetCode刷题】-- 163.缺失的区间
  • ClickHouse为何如此之快
  • Avalonia中如何将View事件映射到ViewModel层
  • (第42天)DataGuard 搭建之使用 Duplicate 复制
  • LeetCode 0070. 爬楼梯:动态规划(递推)
  • XMemcached network layout exception java.nio.channels.ClosedChannelException
  • 记录 | vscode pyhton c++调试launch.json配置
  • Java入门基础:浅显易懂 死循环
  • LeetCode刷题--- 验证二叉搜索树
  • go-zero 开发入门-加法客服端示例
  • Python 快速入门——基础语法
  • EasyRecovery2024苹果电脑mac破解版安装包下载