需求描述 源码地址
- 登录弹框样式实现。
- 在用户发起操作时(如:点击某个按钮)检测用户登录,如未登录,记录用户操作,弹出登录框。
- 用户登录成功后自动用户的上次操作。
- 操作流程 (开始)用户点击行为 --> 验证是否登录 --> 已登录,返回成功回调(结束),未登录,弹出登录框 --> 用户点击登录 --> 登录完成,根据记忆重复用户开始位置的点击行为
所需知识点
- behaviors混入
- 小程序获取自定义组件实例
实现
- 实现登录弹框组件 在根目录创建components文件夹,新建login-box组件,注意这里引用了vant的弹框,可以替换为自己的ui库弹框。
login-box/index.js文件中的$show方法记录当前调用位置的this实例、触发弹框的方法、方法的参数,以便于在登录成功后重新执行触发弹框的方法 来记忆用户的上次操作
import {
SwwComponent} from "../../mixins/component";
import {
wxLogin} from "../../utils/wxPromise";
SwwComponent({
data: {
userInfoVisible: false,
},
pageLifetimes: {
show() {
if ((this.data.userInfoVisible || this.data.phoneVisible) && this.$isLogin()) {
this.$close()
}
}
},
methods: {
//关闭弹框
$close() {
this.setData({
userInfoVisible: false,
phoneVisible: false
})
},
//打开弹框
$show(currentThis, funName, params) {
this.currentThis = currentThis
this.loginFunName = funName
this.loginFunParams = params
this.setData({
userInfoVisible: true
})
},
//获取用户信息
$getUserInfo(e) {
wx.nextTick(