day05作业
好租客项目
最后更新于
这有帮助吗?
好租客项目
最后更新于
这有帮助吗?
能够初始化项目
能够使用 antd-mobile 组件库
能够完成项目整体布局
能够理解嵌套路由
能够使用antd-mobile提供的TabBar组件
能够对TabBar进行定制
能够实现首页路由的处理
好客租房 - 移动 Web 端
项目介绍:本项目是一个在线租房项目,实现了类似链家等项目的功能,解决了用户租房的需求
核心业务:在线找房(地图、条件搜索)、用户登录、房源发布等
React核心库:react、react-dom、react-router-dom
脚手架:create-react-app
数据请求:axios
UI组件库:antd-mobile
其他组件库:react-virtualized、formik+yup、react-spring等
百度地图API
本地接口部署
创建并导入数据:数据库名称hkzf(固定名称)
使用脚手架初始化项目
使用 npx create-react-app hkzf-mobile
进入到项目根目录 使用 npm start
调整项目结构
UI 样式高度可配置,拓展性更强,轻松适应各类产品风格
基于 React Native 的 iOS / Android / Web 多平台支持,组件丰富、能全面覆盖各类场景 (antd-mobile-rn)
提供 "组件按需加载" / "Web 页面高清显示" / "SVG Icon" 等优化方案,一体式开发
使用 TypeScript 开发,提供类型定义文件,支持类型及属性智能提示,方便业务开发
全面兼容 react / preact
适合于中大型产品应用
适合于基于 react / preact / react-native 的多终端应用
适合不同 UI 风格的高度定制需求的应用
创建一个项目
安装
npm install antd-mobile --save
使用
导入组件
导入样式
安装 yarn add react-router-dom
导入路由组件:Router / Route / Link
在pages文件夹中创建 Home/index.js 和 CityList/index.js 两个组件
使用Route组件配置首页和城市选择页面
修改页面标题,在index.html里面修改
基础样式调整,在index.css 中调整
有TabBar的页面: 首页、找房、资讯、我的
无TabBar的页面:城市选择等
TabBar 的菜单也可以实现路由切换,也就是路由内部切换路由(嵌套路由)
嵌套路由:路由内部包含路由
用Home组件表示父路由的内容
用News组件表示子路由的内容
在pages文件夹中创建News/index.js 组件
在Home组件中,添加一个Route作为子路由的出口
设置嵌套路由的path,格式以父路由path开头(父组件展示了,子组件才会展示)
修改pathname为 /home/news,News组件的内容就会展示在Home组件中了
打开 antd-mobile 组件库中TabBar的组件文档
选择APP型选项卡菜单,点击 </>
显示源码
拷贝核心代码到 Home 组件中(Home是父路由组件)
调整代码
修改TabBar菜单项文字标题
TabBar的文字标题在TabBar.Item 的title属性中,所以我们修改对应四个title属性即可
修改TabBar菜单文字标题颜色
TabBar菜单选中的文字颜色在 TabBar的 tintColor 属性中设置
未选中文字颜色用默认的即可,删除 TabBar中的 unselectedTintColor 属性
使用字图图标,修改TabBar菜单的图标
字体图标的 资源在课件的素材中,直接复制过来即可
在 index.js里面引入字体图标的 css样式文件,这样我们只需要在组件中设置对应的类名即可,icon代表是默认图标,selectedIcon代表是选中的图标
修改TabBar菜单项的图标大小
在当前组件对应文件夹中创建index.css文件,修改一下字体图标的大小,设置为20px(注意,在home.js中记得导入当前的样式)
调整TabBar的位置,固定在最底部
通过调试工具我们发现,底部的TabBar的类名叫 am-tab-bar-bar,所以我们只需要设置一下这个类名的属性即可
去掉TabBar的徽章
找到TabBar.Item里面对应的 badge 属性,删除即可
根据TabBar组件文档设置不渲染内容(只保留菜单项,不显示内容)
给TabBar设置 noRenderContent 属性即可
给TabBar.Item 绑定点击事件,在点击事件逻辑里面利用编程式导航,进行路由的切换
利用 this.props.history,push() 来实现
创建TabBar组件菜单项对应的其他3个组件,并在Home组件中配置路由信息
创建对应的组件,然后在 home.js中进行导入,最后配置一下路由
给菜单项添加selected属性,设置当前匹配的菜单项高亮
通过 this.props.location.pathname 就能拿到当前的路由的path
在TabBarItem里面设置 selected的属性,判断是否等于当前的pathname
在state中记录当前的pathname
在每个TabBar.Item里面利用selected属性判断一下
发现TabBar的Iitem里面的内容几乎是一致的,只是里面内容不同
所以我们可以封装一下
提供菜单数据
使用map来进行遍历
声明一下数据源
封装一个函数来遍历渲染
在render方法中调用即可
首页的路由是需要去处理的
修改首页路由的配置: /home(去掉后面的index);这里需要添加 exact属性
如果是默认路由需要跳转到 /home
打开 antd-mobile的
antd-mobile
是 的移动规范的 React 实现,服务于蚂蚁及口碑无线业务。