3.4【微信小程序全栈开发课程】组件(Component)--封装登录弹窗组件

组件 (Component) 是 Vue.js 最强大的功能之一。用来封装可重用的代码或者封装一个单独的模块,比如我们上一节的登录弹窗,下面我们来演示一下如何将代码提取到组件

1、创建组件

在src/components文件夹下面创建一个LoginWindow.vue文件
写入vue基础代码

<template>
  <div>
    登录弹窗组件
  </div>
</template>

<script>
export default {
}
</script>

<style lang='scss'>
</style>
2、添加样式代码

将index.vue文件中上一节课添加的样式代码,剪切到我们刚刚创建的LoginWindow.vue文件中。注意是剪切哦~

剪切到LoginWindow.vue文件中的标签中

.modal-mask {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  background: #000;
  opacity: 0.5;
  overflow: hidden;
  z-index: 9000;
  color: #fff;
}
.modal-dialog {
  box-sizing: border-box;
  width: 560rpx;
  overflow: hidden;
  position: fixed;
  top: 30%;
  left: 0;
  z-index: 9999;
  background: #fff;
  margin: -150rpx 95rpx;
  border-radius: 16rpx;
}
.modal-content {
  box-sizing: border-box;
  display: flex;
  padding: 0rpx 53rpx 50rpx 53rpx;
  font-size: 32rpx;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}
.content-tip {
  text-align: center;
  font-size: 36rpx;
  color: #333333;
}
.content-text {
  height:130px;
  padding:10px 0px 50px 0px;
  font-size:14px;
}
.modal-footer {
  box-sizing: border-box;
  display: flex;
  flex-direction: row;
  border-top: 1px solid #e5e5e5;
  font-size: 16px;
  font-weight:bold;
  height: 45px;
  line-height: 45px;
  text-align: center;
  background:#feb600;
}
button {
  width: 100%;
  background:#feb600;
  color:#FFFFFF;
  font-weight:bold;
}
.img {
  width: 280px;
  height:90px;
}
.little-tip {
  padding-top:15px;
  padding-bottom:3px;
  font-size: 14px;
  font-weight:bold;
  color: #feb600;
}
.little-content {
  padding-top:5px;
  font-size: 13px;
  color:#606060;
}
.key-bold {
  padding-top:5px;
  font-size: 14px;
  font-weight:bold;
}
3、编辑script部分
(1)在LoginWindow.vue文件中标签内添加methods对象,并将index.vue文件中的登录方法剪切到methods对象中
//参考代码,无需粘贴
//<script>
//export default {
//methods: {


    //需要剪切粘贴的部分,从index.vue剪切到LoginWindow.vue文件
    loginSuccess (res) {
      //将用户信息保存到缓存中,wx.setStorageSync是小程序的一个API,用来将信息添加到缓存中
      wx.setStorageSync('userinfo', res)
    },

    login () {
      //wx.showToast是小程序的消息提示框API
      wx.showToast({
        title: '登录中',
        icon: 'loading'
      })
      //通过SDK插件,请求config.js中配置的loginUrl路径(http://localhost:5757/weapp/login)
      qcloud.setLoginUrl(config.loginUrl)
      qcloud.login({
        success: res => {
          //登录成功后,显示底部导航栏
          wx.showTabBar()
          console.log('登录成功', res)
          //调用loginSuccess方法,并将用户信息作为参数
          this.loginSuccess(res)
        },
        fail: err => {
          console.error('登录失败', err)
        }
      })
    }


  //参考代码,无需粘贴
  //}
//}
//</script>
(2)import引用语句

将import引用SDK插件、config.js语句剪切到LoginWindow.vue文件中

//参考代码,无需粘贴
//<script>


  //需要粘贴的部分
  import qcloud from 'wafer2-client-sdk'
  import config from '@/config'
4、编辑template部分

将登录弹窗部分的页面代码也剪切到LoginWindow.vue文件中

<!-- 参考代码,无需粘贴
<template>
  <div> -->


    <!--需要剪切粘贴的部分-->
    <div class="modal-mask">
    </div>
    <div class="modal-dialog">
      <div class="modal-content">
        <img class="img" src="/static/images/littleTip-huang.jpg">
        <div class="content-text">
          <p class="key-bold">真自律是一款自律神器。</p>
          <p class="key-bold">将生活想象成通关打怪,打败自己的心魔加分,被心魔打败减分。</p>
          <p class="little-tip">举个例子:</p>
          <p class="little-content">
            午饭忍住没有吃麻辣烫,吃的绿色蔬菜,加5分;
          </p>
          <p class="little-content">
            但是晚饭还是没有忍住T_T,罪恶罪恶,减10分。
          </p>
        </div>
      </div>
      <div class="modal-footer">
         <!-- 小程序集成的API,通过button来授权登录 -->
         <button open-type="getUserInfo" lang="zh_CN" class='btn' @getuserinfo="login">授权登录</button>
      </div>
    </div>


<!-- 参考代码,无需粘贴
  </div>
</template> -->
5、编辑index.vue文件
(1)在index.vue文件中关联组件

通过import引入组件,并添加components对象声明组件

//参考代码,无需粘贴
//<script>
 

 //需要粘贴的部分,通过import引入组件
  import LoginWindow from '@/components/LoginWindow'


  //参考代码,无需粘贴
  //export default {


    //需要粘贴的部分,添加components对象声明组件
    components: {
      LoginWindow
    },
(2)编辑template部分,添加以组件命名的HTML元素
<!-- 参考代码,无需粘贴
<template>
  <div> —>


  <!-- 需要粘贴的部分 -->
  <LoginWindow></LoginWindow>


    <!-- 参考代码,无需粘贴
    <div class="show"> -->
6、查看效果

在终端启动项目,微信开发者工具会出现与上一节一样的效果

作者:猫宁一
95后全栈程序媛₍ᐢ •⌄• ᐢ₎一枚~ 热爱学习!热爱编程!
可关注【猫宁一】公众号领取我所有全栈项目代码哦~

点击查看课程目录:微信小程序全栈开发课程目录

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵宁一

点赞是最好的赞赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值