小程序笔记

252 阅读3分钟

启动编译报错

报错1:

Syntax Error: TypeError: this.getOptions is not a function

原因:sass-loader版本过高 解决:安装8.x版本 yarn add sass-loader@8.x 或者 npm install add sass-loader@8.x

报错2:

Node Sass version 6.0.0 is incompatible with^4.0.0

原因: ## node-sass 6.0.0版本与^4.0.0不兼容 解决: 卸载node-sass,yarn remove sass-loader或者npm uninstall sass-loader,安装node-sass@4.14.1 yarn add node-sass@4.14.1或者npm install node-sass@4.14.1

1、进入微信小程序时,不需要登陆状态 2、当点击更深一层内容时,弹出弹框提示获取微信头像,昵称

<button class="user-info-btn" open-type="getUserInfo" @getuserinfo="mpGetUserInfo" withCredentials="true">
    <slot></slot>
</button>

3、检查session是否失效(wx.checkSession): 1)、失效,uni.login登陆,获取code,发送code到开发者服务器,返回token、openid等信息 2)、有效,发送code(保存在缓存中)到开发者服务器,返回token、openid等信息

Cannot read property ‘forceUpdate’ of undefined 解决:设置appid

Component is not found in path "pages/ 解决:重启微信小程序或者重启项目(可能是微信开发者工具自带bug)

swiper precious-margin和next-margin用法: 小程序里经常使用swiper组件来实现轮播滑动的效果。但是有时候我们需要露出前一张和后一张图片一部分,我们可以使用previous-margin和next-margin属性。   previous-margin:前边距,可用于露出前一项的一小部分   next-margin:后边距,可用于露出后一项的一小部分 假设设置 一个图片的尺寸为宽为666rpx,高为600rpx,前一张图片露出为20rpx,后一张图片露出为20rpx。这里使用的ip6的屏幕尺寸,宽为750rpx (rpx单位:可以根据屏幕宽度进行自适应)。 1、用屏幕宽度-图片的宽度,得到两边的边距和 750-666=84rpx 2、.将边距拆成两部分,得到一边的边距,用边距减去露出的尺寸,得到两张图片之间的边距 84/2-20=22rpx 3、图片间距 拆成两部分,分别为图片的外边距 22/2=11rpx 4、露出的尺寸 加上 外边距 就等于前后边距previous-margin和next-margin的值 11+20=31rpx 注意:swiper-item的宽度不能改成图片的大小

最多只显示两行文字,多出的部分显示...

display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;

显示一行,多出的部分显示...

text-overflow: ellipsis;
word-break: break-all;

uniapp 生命周期 1、页面的加载过程是: 加载-显示-加载完成-页面隐藏-页面卸载

2、页面生命周期的出发过程: onLoad:监听页面加载 =》 onShow:监听页面显示 =》 onReady:监听页面初次渲染完成 =》 onHide:监听页面隐藏 =》 onUnload:监听页面卸载

3、onLoad跟onLoadonShow的区别

         (1)onShow: 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面

          例如:页面b:通过缓存跳转到页面a

          页面B:缓存一个变量newMember   uni.setStorageSync('newMember', this.newMember)

          页面A可以接受这个参数变量:onShow() { let str = uni.getStorageSync('newMember') },

         (2) onLoad:只加载一次,监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参)

             只加载一次 所以如果b页面不断的修改数据 再通过 onLoad(){  uni.navigateBack({delta: 1,})   回到A页面 a页面的数据不会随之改变

4、页面生面周期在组件中不起作用,要用vue自带的生命周期

5、BUG HBuilder 3.3.x版本,使用vue3.x版本,子组件的上抛事件不生效。 官方给出的方案是事件名,使用驼峰的形式。详见:ask.dcloud.net.cn/question/13…

6、小程序登陆

api-login.2fcc9f35.jpg (1)、信小程序通过wx.login()接口获取code

(2)、程序客户端发送code到开发者服务器,服务器通过auth.code2Session获取OpenID、UnionID、会话密钥session_key

(3)、返回给小程序客户端登陆状态(token),每次向服务器发起请求带上登陆状态(token)