S12-07 小程序-Taro-项目:mr-mp-taro-juanpi
[TOC]
接口文档
警告
由于juanpi.com网站已经倒闭,因此接口中的图片已经不再显示
首页
首页Banner
请求方法 : GET
接口地址 : /homeinfo
调用例子 : baseURL + /homeinfo
接口返回的数据格式:
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
受欢迎度和推荐
请求方法 : GET
接口地址 : /recommend
调用例子 : baseURL + /recommend
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
商品列表
请求方法 : POST
接口地址 : baseURL + /goods
可选参数(json格式) :
{
"page": 1, # 默认为1,即第一页
"type": 0 # 支持 0 和 1。 其中 0 代表是精选专场, 1 代表是精选单品
}
调用例子 : baseURL + /goods
接口返回的数据格式:
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
我的
我的页面列表
请求方法 : GET
接口地址 : /profile
必选参数 : 无
调用例子 : baseURL + /profile
接口返回的数据格式:
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
环境搭建
技术栈
- react18
- RTK
- taro
项目初始化
taro init mr-mp-taro-juanpi
处理报错
错误: $RefreshReg$ is not defined
解决: 这是由于React 在 H5 Dev 编译模式时默认开启了 fast refresh 功能。可以通过关闭热更新解决该问题:
1、在config/index.js
中,设置h5的hot为false
const config = {
// ...
h5: {
devServer: {
hot: false, // 关闭热更新
},
},
}
2、在babel.config.js
中,设置hot为false
module.exports = {
presets: [
[
'taro',
{
framework: 'react',
hot: false, // 禁用fast refresh
},
],
],
}
错误: 不支持commonjs
解决: 这是因为eslint的格式化检查问题,实际是需要支持commonjs的。可以关闭该检查
错误: 缺少全局变量的定义
解决: 在eslint中定义该全局变量
错误: eslint引号规则强制在 JSX 属性中使用一致的单引号或双引号
解决: 关闭该规则
功能: 添加别名@
功能: 启用webpack缓存
功能: 启用局部css样式,和图片转base64限制
依赖包
- @reduxjs/toolkit
- react-redux
- classnames
- proptypes
页面模板
页面使用函数式组件 + hooks编写
样式
样式使用局部样式:文件格式:index.modules.scss
使用样式
定义样式
导航栏
注意: 该配置在h5中不会生效,只在小程序中生效
tabBar
1、创建页面
taro create --name category
taro create --name cart
taro create --name profile
taro create --name detail
2、配置tabbar
3、配置pages
首页
组件:HomeSearch
页面布局
1、使用组件
2、页面布局
3、样式
组件:HomeBanner
接口
请求方法 : GET
接口地址 : /homeinfo
调用例子 : baseURL + /homeinfo
接口返回的数据格式:
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
请求数据
1、service
2、store/index.js
3、store/modules/home.js
4、app.js
5、组件
页面布局
1、获取store数据
2、使用组价
3、页面布局
组件:HomePopular
接口
请求方法 : GET
接口地址 : /recommend
调用例子 : baseURL + /recommend
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
请求数据
1、service
2、store
3、组件
页面布局
1、使用组件
2、页面布局
3、样式
组件:HomeRecommend
接口
请求方法 : GET
接口地址 : /recommend
调用例子 : baseURL + /recommend
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
请求数据
见:组件:HomePopular
页面布局
1、使用组件
2、页面布局
3、样式
商品列表
全局组件:TabControl
页面布局
1、使用组件
2、页面布局
3、样式
接口
请求方法 : POST
接口地址 : baseURL + /goods
可选参数(json格式) :
{
"page": 1, # 默认为1,即第一页
"type": 0 # 支持 0 和 1。 其中 0 代表是精选专场, 1 代表是精选单品
}
调用例子 : baseURL + /goods
接口返回的数据格式:
{
"code": 200,
"data": {
"xxx": "xxx"
}
}
请求数据
1、service
2、store
3、组件:触发action
注意: 异步action只能接收一个参数
4、组件:获取数据
全局组件:GridView
页面布局
1、使用组件
2、页面布局
3、样式
全局组件:GridViewItem
页面布局
1、使用组件
2、页面布局
3、样式
功能
商品列表切换
1、在homeStore中定义当前tab名currentTabName
2、在home页获取currentTabName
3、在使用GridView组件时通过currentTabName动态获取goods数据
4、点击tabControl,修改homeStore中的currentTabName
上拉加载
1、在useReachBottom()
生命周期中监听页面滚动到底部,并发送请求
详情页
Detail
页面跳转
1、点击grid-view-item组件,向外发射onItemClick事件
2、在外部组件中监听onItemClick事件
3、在detail页面接收参数,并展示
打包部署
打包配置
可以在dist目录下创建一个与编译的目标平台名同名的目录,并将结果放在这个目录下。
例如:编译到微信小程序,最终结果是在 dist/weapp 目录下; H5打包结果放在 dist/h5目录下
好处是,各个平台使用独立的目录互不影响,从而达到多端同步调试的目的, 在config/index.js配置如下:
1、在config/index.js
文件中配置如下:
2、针对微信小程序的特殊配置
H5
打包:
npm run build:h5
微信小程序
1、在project.config.json
中配置小程序
2、打包
npm run build:weapp
3、微信开发者工具打开 weapp 目录进行预览或发包