coderwwh w:what是什么? w:why为什么? h:how怎么样?
路由
比如要实现,从商品列表,点进去进入商品详情页,要注意什么?
- 获取该商品对应的id
- 获取到这个id,应该是在父组件(商品列表中)点击的时候获取
- 点击之后就要跳转,这时候要传值
这里常用的路由是wx.navigateTo(Object object)
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 [wx.navigateBack]可以返回到原页面。小程序中页面栈最多十层。
参数
属性 类型 默认值 必填 说明 url string 是 需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'events Object 否 页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。 success function 否 接口调用成功的回调函数 fail function 否 接口调用失败的回调函数 complete function 否 接口调用结束的回调函数(调用成功、失败都会执行)
多个请求如何操作?
接上面说的,在子组件里,拿到对应的id,如果要有多个请求,如何操作呢?
如图,这样做的弊端是,2得等1,3等2,但是这些数据并无关联的情况下,这样操作大大降低效率
多个请求数据并无关联的情况下,使用promise更加合理
getPageData: function(id) {
// 1.请求播放地址
getMVURL(id).then(res => {
this.setData({ mvURLInfo: res.data })
})
// 2.请求视频信息
getMVDetail(id).then(res => {
this.setData({ mvDetail: res.data })
})
// 3.请求相关视频
getRelatedVideo(id).then(res => {
this.setData({ relatedVideos: res.data })
})
}
补充:如果同一个东东(比如都是请求数据),有好几个请求,可以简单抽一下,这样逻辑更加清晰
组件库的使用(Vant
- 在WX开发者工具里打开终端 npm init -y
- npm install @vant/weapp
- 工具 --》 构建npm
- 想用组件的时候,需要注册
- 将 app.json 中的
"style": "v2"去除
解决swiper宽度问题
首先了解一下 widthFix
原生组件image
理想状态是:宽度给100%,高度会自动
但是计算出图片的高度 ,和轮播图的高度 ,会有不一致
轮播图默认有150px的高度,但是这个轮播图的高度不能够是写死的150
轮播图的高度应该与图片高度保持一致,这样的话,那个小点点就会正常显示(内部是根据swiper做了一个定位
要达到这个需求(轮播图高度与图片高度保持一致),面临的问题:
- 图片高度如何获取?
- 图片高度也不是固定死的,他是根据宽度
widthFix计算出来的,和图片大小有关 - 能拿到图片计算后的高度,用这个高度,设置轮播图的高度
- 不能用wxss写这个高度,因为是动态的,必须用行内样式
如何获取网络图片的高度?
如何知道图片加载完成?
| ** | 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
|---|---|---|---|---|---|---|
| bindload | eventhandle | 否 | 当图片载入完毕时触发,event.detail = {height, width} | 1.0.0 |
event.detail = {height, width}这里是原始图片宽高
我们要做的是获取image组件的宽高,行为一个大图,被放进去,因为宽度100%,所以高度自动变换
如何去获取某一个组件的高度?
大功告成!!!
这时候,不论怎么样切换机型,都不会出问题