第五篇:【传奇开心果系列】Ant Design Mobile of React移动应用开发:基础页面制作介绍和示例代码_react开发页面

125 阅读8分钟

const RegisterForm = () => { const handleSubmit = (values) => { // 处理注册逻辑 if (values.password === values.confirmPassword) { Toast.success('注册成功'); } else { Toast.fail('两次输入的密码不一致'); } };

return (

<Form.Item name="username" rules={[{ required: true, message: '请输入用户名' }]}> </Form.Item> <Form.Item name="password" rules={[{ required: true, message: '请输入密码' }]}> </Form.Item> <Form.Item name="confirmPassword" rules={[{ required: true, message: '请确认密码' }]}> </Form.Item> 注册 ); };


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/386ae6121ad84f5da2a328494282ba5b~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=R70I%2F7NcEmItLXo8q8rVaH7rqWs%3D)  
 3. 主页示例代码:



import { TabBar } from 'antd-mobile';

const HomePage = () => { const [selectedTab, setSelectedTab] = useState('home');

return ( <div style={{ position: 'fixed', height: '100%', width: '100%', top: 0 }}> <TabBar.Item title="首页" key="home" selected={selectedTab === 'home'} onPress={() => setSelectedTab('home')} > {/* 主页内容 /} </TabBar.Item> {/ 其他TabBar.Item */} ); };


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/509197ee2d544147b34e660e608be8e9~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=kbrpnG14XOYE8tbpqUBkbjL8cSM%3D)  
 4. 个人中心示例代码:



import { List } from 'antd-mobile';

const ProfilePage = () => { return ( <List.Item thumb="avatar.png">用户名</List.Item> {/* 其他个人信息项 */} <List.Item arrow="horizontal">修改密码</List.Item> <List.Item arrow="horizontal">退出登录</List.Item> ); };


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/f72bc1a7814144329fd6d56eedf16d35~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=DohfN6cdfc4oGkEBx%2BvuqAhI01k%3D)  
 5. 列表页示例代码:



import { List } from 'antd-mobile';

const ListPage = () => { return ( <List.Item>列表项1</List.Item> <List.Item>列表项2</List.Item> <List.Item>列表项3</List.Item> {/* 更多列表项 */} ); };


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/c1bdc958d7c74ea1975a88fc725dd1ed~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=ltJZnxCiwqPHgtdSpzDwo24ImE0%3D)  
 6. 详情页示例代码:



import { Card, List, Accordion } from 'antd-mobile';

const DetailPage = () => { return ( <Card.Header title="详情页标题" /> <Card.Body> <List renderHeader={() => '基本信息'}> <List.Item>详情项1</List.Item> <List.Item>详情项2</List.Item> <List.Item>详情项3</List.Item> {/* 其他详情项 /} <Accordion.Panel header="更多信息"> {/ 更多详细内容 */} </Accordion.Panel> </Card.Body> ); };


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d3accf5926ec467682db839a900715fe~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=PBDTvy81MnUgkScJ05u1Dd7Gutg%3D)  
 7. 设置页示例代码:



import { Form, Input, Checkbox } from 'antd-mobile';

const SettingsPage = () => { return (

<Form.Item name="username" rules={[{ required: true, message: '请输入用户名' }]}> </Form.Item> <Form.Item name="email" rules={[{ required: true, message: '请输入邮箱' }]}> </Form.Item> <Form.Item name="notifications"> 接收通知 </Form.Item> {/* 其他设置项 */} ); };


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d3dcf0283bf644cda338af14cc532278~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=gohhQdNawWRR0mttM2bWVEL8Y%2BI%3D)  
 8. 搜索页示例代码:



import { SearchBar, List } from 'antd-mobile';

const SearchPage = () => { return (

<List.Item>搜索结果1</List.Item> <List.Item>搜索结果2</List.Item> <List.Item>搜索结果3</List.Item> {/* 更多搜索结果 */}
); };


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/36ec03cadc7841bd91cc39e0054ce92e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=JNTApiSSKARo%2BofeJsfNL6jahrg%3D)  
 9. 升级页示例代码:



import { List, Button } from 'antd-mobile';

const UpgradePage = () => { return ( <List.Item extra="v1.0.0">当前版本</List.Item> <List.Item> 检查更新 </List.Item> ); };


以上是对于登录页、注册页、主页、个人中心、列表页、详情页、设置页、搜索页和升级页的示例代码。你可以根据具体需求进行修改和定制,以满足你的应用界面的需求。请确保在使用AMR组件时参考官方文档,了解每个组件的详细使用方法和属性。如果有任何问题,请随时提问。


## 四、页面跳转切换路由综合示例


当涉及到多个页面之间的切换或导航时,可以使用React Router库来实现路由管理。以下是一个综合示例,展示如何在Ant Design Mobile of React(AMR)中使用React Router实现这九个基础页面的切换和导航:


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/ed001604766f4391bf33d86a5a44dc3c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=URr0g8lANTG%2BoahrpN58cxinMxo%3D)



import { BrowserRouter as Router, Route, Link } from 'react-router-dom'; import { TabBar } from 'antd-mobile';

const HomePage = () => { return

主页内容

; };

const LoginPage = () => { return

登录页内容

; };

const RegisterPage = () => { return

注册页内容

; };

const ProfilePage = () => { return

个人中心内容

; };

const ListPage = () => { return

列表页内容

; };

const DetailPage = () => { return

详情页内容

; };

const SettingsPage = () => { return

设置页内容

; };

const SearchPage = () => { return

搜索页内容

; };

const UpgradePage = () => { return

升级页内容

; };

const App = () => { const [selectedTab, setSelectedTab] = useState('home');

return ( <div style={{ position: 'fixed', height: '100%', width: '100%', top: 0 }}> <TabBar.Item title="首页" key="home" selected={selectedTab === 'home'} onPress={() => setSelectedTab('home')} > 主页 </TabBar.Item> <TabBar.Item title="个人中心" key="profile" selected={selectedTab === 'profile'} onPress={() => setSelectedTab('profile')} > 个人中心 </TabBar.Item> {/* 其他TabBar.Item */} ); };

export default App;


在上面的示例中,我们使用了React Router来管理不同页面的路由,通过`Link`组件实现页面之间的导航。在`TabBar.Item``onPress`事件中,通过`setSelectedTab`函数来切换选中的Tab,并使用`Link`组件的`to`属性来指定要导航到的路径。


每个页面都被定义为一个函数组件,并通过`Route`组件来匹配对应的路径,并渲染相应的组件。


你可以根据实际需求修改每个页面组件的内容和样式,并根据需要添加其他页面和路由。


希望这个综合示例能够帮助你理解如何在AMR中使用React Router实现页面切换和导航。如果有任何问题,请随时提问。


## 五、知识点归纳


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5eb208aec2d84497b83e07f651d4ad94~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=p6ov%2B2FVf7nPQ08udddA8EObUD0%3D)  
 当涉及到Ant Design Mobile of React(AMR)的基础页面登录页、注册页、主页、个人中心、列表页、详情页、设置页、搜索页和升级页的开发时,以下是一些需要注意的知识点的总结:


1. 组件使用:AMR提供了丰富的组件库,如Form、Input、Button、List、Card、Accordion等,可以根据需求选择合适的组件来构建各个页面。
2. 表单验证:使用AMR的Form组件和表单验证规则来实现对用户输入的验证,确保数据的准确性和完整性。
3. 导航菜单和路由管理:导航菜单,使用AMR的TabBar和TabBarItem组件来创建主页的导航菜单,并通过选中状态切换页面。路由管理:使用React Router库来管理不同页面之间的路由,通过Route组件匹配路径并渲染相应的组件,通过Link组件实现页面之间的导航。
4. 页面布局:使用AMR的Card、List等组件来创建页面的布局结构,包括标题、描述、图标等内容。
5. 表单输入:使用AMR的Input、Checkbox等组件来实现用户的输入,包括用户名、密码、邮箱等。
6. 消息提示:使用AMR的Toast、Message等组件来显示登录失败、注册成功等消息提示。
7. 页面跳转:使用Link组件和React Router的编程式导航来实现页面之间的跳转。
8. 数据展示:使用AMR的List和ListItem组件来展示列表页和搜索页的数据列表,可以自定义内容和样式。
9. 版本管理:使用AMR的List和Button组件来展示当前应用的版本信息,并提供升级功能。
10. 折叠展开:使用AMR的Accordion组件实现详情页内容的折叠展开效果,提供更多详细信息。


以上是对于开发这九个基础页面时需要注意的一些知识点的总结。通过合理运用AMR的组件和React Router的路由管理,你可以构建出美观、功能丰富的移动应用界面。如果有任何进一步的问题,请随时提问。


## 六、前面提到的知识点的分别示例代码:


![在这里插入图片描述](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/211955ca84fa4d5b93073b3e148fa447~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771416075&x-signature=IzInJHyXFkfsVwnLsB%2FWKnDQxJk%3D)


1. 组件使用示例:



import { Form, Input, Button, List, Card, Accordion } from 'antd-mobile';

const ExampleComponent = () => { return (

<Form.Item> </Form.Item> <Form.Item> </Form.Item> 登录

  <List>
    <List.Item>列表项1</List.Item>
    <List.Item>列表项2</List.Item>
    <List.Item>列表项3</List.Item>
  </List>

  <Card>
    <Card.Header title="详情页标题" />
    <Card.Body>
      <List>
        <List.Item>详情项1</List.Item>
        <List.Item>详情项2</List.Item>
        <List.Item>详情项3</List.Item>
      </List>
      <Accordion>
        <Accordion.Panel header="更多信息">
          更多详细内容...
        </Accordion.Panel>
      </Accordion>
    </Card.Body>
  </Card>
</div>

); };


2. 表单验证示例:



import { Form, Input, Button, Toast } from 'antd-mobile';

const LoginForm = () => { const handleSubmit = (values) => { if (values.username === '' || values.password === '') { Toast.fail('请输入用户名和密码'); } else { // 处理登录逻辑 Toast.success('登录成功'); } };

return (

<Form.Item name="username" rules={[{ required: true, message: '请输入用户名' }]}> </Form.Item> <Form.Item name="password" rules={[{ required: true, message: '请输入密码' }]}> </Form.Item> 登录 ); };


3. 导航菜单和路由管理示例:



import { BrowserRouter as Router, Route, Link } from 'react-router-dom'; import { TabBar } from 'antd-mobile';

const HomePage = () => { return

主页内容

; };

const ProfilePage = () => { return

个人中心内容

; };

const App = () => { const [selectedTab, setSelectedTab] = useState('home');

return ( <div style={{ position: 'fixed', height: '100%', width: '100%', top: 0 }}> <TabBar.Item title="首页" key="home" selected={selectedTab === 'home'} onPress={() => setSelectedTab('home')} > 主页 </TabBar.Item> <TabBar.Item title="个人中心" key="profile" selected={selectedTab === 'profile'} onPress={() => setSelectedTab('profile')} > 个人中心 </TabBar.Item>

); };


4. 页面布局示例:



import { Card, List } from 'antd-mobile';

const DetailPage = () => { return ( <Card.Header title="详情页标题" /> <Card.Body> <List renderHeader={() => '基本信息'}> <List.Item>详情项1</List.Item> <List.Item>详情项2</List.Item> <List.Item>详情项3</List.Item> <Accordion.Panel header="更多信息"> 更多详细内容... </Accordion.Panel> </Card.Body> ); };


5. 表单输入示例:



import { Form, Input, Checkbox } from 'antd-mobile';

const SettingsPage = () => { return (

<Form.Item name="username" rules={[{ required: true, message: '请输入用户名' }]}> </Form.Item> <Form.Item name="email" rules={[{ required: true, message: '请输入邮箱' }]}> </Form.Item> <Form.Item name="notifications"> 接收通知 </Form.Item> ); };


6. 消息提示示例:



import { Toast, Button } from 'antd-mobile';

const ExampleComponent = () => { const handleButtonClick = () => { Toast.success('操作成功'); };

return (

点击按钮
); };


7. 页面跳转示例:



import { Link } from 'react-router-dom';

const ExampleComponent = () => { return (

跳转到个人中心
); };


8. 数据展示示例:



import { List } from 'antd-mobile';

const ListPage = () => { const data = ['列表项1', '列表项2', '列表项3'];

return ( 文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

了解详情:docs.qq.com/doc/DSnl3ZG…