复习微信小程序顺便记个笔记

微信小程序笔记

​ 作者:孙志豪

微信小程序常用的qpi

wx.login 调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。
wx.getSetting  获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限
wx.getUserProfile() 获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo
wx.getUserInfo 获取用户的信息 

微信小程序的页面生命周期

· onLoad():页面加载时触发 
· onShow():页面显示/切入前台时触发
· onReady():页面初次渲染完成时触发 
· onHide():页面隐藏/切入后台时触发
· onUnload():页面卸载时触发
· onPullDownRefresh():下拉刷新的钩子函数 
· onReachBottom():上翻到底的钩子函数 

微信小程序的组件生命周期

· created():组件实例刚刚被创建好时触发。
· attached():在组件完全初始化完毕、进入页面节点树后触发。
· detached() 组件离开页面节点树后触发。

微信小程序的跳转方式导航

wx.navigateTo():保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面
wx.redirectTo():关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
wx.switchTab():跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.navigateBack()关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层
wx.reLaunch():关闭所有页面,打开到应用内的某个页面reLaunch重新发动

// 使用方式  开头这个 绝对路径 / 代表根 
1.相对路径
相对路径:相对于项目目录的路径,在开发中引用js、css、或者图片等,都是使用相对路径。
例:..\img\g\jpg

2.绝对路径
绝对路径:从根目录开始,是一个完整的路径。
例:D:\demo\img\g.jpg

//  找到app.json 文件夹 配置页面路径才可以跳转 , 创建页面在pages写入路径保存即可 pages 就多了个文件夹
"pages": [
    "pages/index/index",
    "pages/search/search",
 ],

// 跳转方式 传参数穿了两个参数 用&符号两个参数 
wx.navigateTo({
    
    
     url:`/pages/readText/readText?id=${
      
      id}&sectionId=${
      
      this.data.sectionID}` // 绝对路经 推荐
})

 // 标签法 也可以使用相对路径
<navigator url="../bookDetail/bookDetail">dawadw</navigator>

链接:https://blog.csdn.net/qq_54753561/article/details/121878427

微信小程序的 tabBar

// 肯定会报错 没有图片 和路径  tabBar 最多5个最少两个
"tabBar": {
    
    
    "selectedColor": "#ff3f4c",
    "borderStyle": "black",
    "position": "bottom",
    "list": [
      {
    
    
        "text": "首页",
        "pagePath": "pages/index/index",
        "iconPath": "img/tabBarImg/shouye_1.png",
        "selectedIconPath": "img/activeTabbar/shouye_1.png"
      },
      {
    
    
        "text": "朋友圈",
        "pagePath": "pages/index/index",
        "iconPath": "img/tabBarImg/quanziguanli.png",
        "selectedIconPath": "img/activeTabbar/quanziguanli.png"
      },
      {
    
    
        "text": "更多",
        "pagePath": "pages/index/index",
        "iconPath": "img/tabBarImg/gengduo.png",
        "selectedIconPath": "img/activeTabbar/gengduo.png"
      },
    ]
 },

微信小程序的事件传值

 // 在循环的标签上面加入 传入没一项data-item="{
    
    {item}}"  要用 {
    
    {}} 包裹因为他是变量  传入下标 data-index="{
    
    {index}}"
 // bindtap 小程序的事件点击
  <view data-index="{
    
    {index}}" data-item="{
    
    {item}}" bindtap="toReadText" wx:key="index" wx:for="{
    
    {dataList.list}}">
     {
    
    {
    
    item.name}}
  </view>
 // 通过事件对象 可以拿到穿过来的值
  toReadText(e:any){
    
    
    console.log(e.currentTarget.dataset.item.id);
  },

微信小程序的组件

 // 新建一个 components 文件夹专门用来放组件 在面面在建一个文件夹 选中文件夹然后右键 新建Component
 // 里面的有个 json 文件 component 为true
{
    
    
  "component": true,
  "usingComponents": {
    
    }
}


// 在页面用找到 json 文件  usingComponents 写入路径  页面写入组件即可就可以使用了
{
    
    
  "usingComponents": {
    
    
    "novelList":"../../compotent/novelList/novelList",
    "bookList":"/compotent/bookList/bookList",
  }
}
 // 全局组件 也可以 找到app.json 文件 在里面写入 就是全局组件了

微信小程序的组件通信

// 页面传子组件 在组件上面写入属性 变量 bookData {
    
    {}}给括起来   字符串不许要括起来
<novelList bookData="{
    
    {bookData}}"></novelList>
// 子组件里面找到在  properties 写入接收的数据
  properties: {
    
    
    bookData:{
    
    
      type:Array, // 类型
    },
    imgFlag:{
    
    
      type:Boolean, // 类型
      value:false // 默认值
    }
  },
// 子组件传父组件  在页面中的子组件标签上写自定义事件  事件的名字 ageTabs
// 页面
<novelHeader bind:ageTabs="ageTabs"></novelHeader> 
// 子组件事件触发相当于vue 的emit  ageTabs 事件名字
ageTAabSwidch(){
    
    
   this.triggerEvent('ageTabs','我是数据')
},

微信小程序插槽的使用

链接:https://blog.csdn.net/qq_54753561/article/details/121796270

微信小程序的循环

//  wx:for-item="item1" 指定下一次的每一项 默认是 item 是每一项
//  wx:for="{
    
    {Floordata}}" wx的for 循环 Floordata 数据一定要用 {
    
    {}}} 包裹
// wx:key="index" 这个不用加上 {
    
    {}}
<view wx:key="index"  wx:for="{
    
    {Floordata}}" wx:for-item="item1"> 
  <image  src="{
    
    {item1.name}}"></image>
  <view wx:key="index" wx:for="{
    
    {item1.name}}" wx:for-item="item2">
    <image src="{
    
    {item2.name}}"></image>
  </view>
</view>

微信小程序的修改数据

小程序通过赋值 更该数据的话是无法 同步视图的,必须通过 this.setData({
    
    }) 来修改
// pages/search/search.ts
import {
    
    Search,SearchHotVal,getSearchValue} from '../../api/api'
Page({
    
    
  /**
   * 页面的初始数据
   */
  data: {
    
    
      searchHistory:<any>[],
  },
  // 搜索的事件
  onSearch(e:any){
    
    
   // 解构
    let {
    
    query,booksData,searchHistory,hintIsShow} = this.data
    // 增加数据
     searchHistory.unshift({
    
    
      id:new Date().getTime(),
      val:e.detail.value
     })
    // 修改
     this.setData({
    
    
      query:e.detail.value,
      searchHistory,
      hintIsShow:false
     })
 }           

  onLoad() {
    
    
    // 页面加载村本地存储重新赋值 取得时候一定要是一个空数组
    this.setData({
    
    
      searchHistory:wx.getStorageSync('searchValue') || <any>[]
    })
  },
})

微信小程序混入

// 新建一个 mixins文件  在页面的Page中导入我们的 mixins 文件
import mixins from './mixins'

Page({
    
    
 behaviors:[mixins],
/*behaviors
behaviors 是用于组件间代码共享的特性,类似于一些编程语言中的 “mixins” 或 “traits”。
每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。 每个组件可以引用多个 behavior ,behavior 也可以引用其它 behavior 。*/
})    

mixins 文件夹写入
export default Behavior({
    
    
  data:{
    
    
    // 存放数据的地方
  },
  methods:{
    
    
    // 请求方法的接口 要写到 methods 中
    readText(sectionIdParams:number,idParams:number) {
    
    
      let {
    
    dataText,sectionId,id} = this.data // 可以拿到主文件的data
    },
  }
})


官方地址为准:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/behaviors.html

微信小程序的登录流程

1.用 wx.login API 先获取一个临时凭证 拿到他的 conde
2.用这个   code + addId + 凭证码 
        获取三个id:
               openid
               每个用户的固定id 
               session_key 临时的会话存储凭证
               
3. wx.getSetting  使用 getUserInfo 获取用户的信息 
4. 用户信息获取第三方接口的 token
             
<button  bindtap="bindGetUserInfo">
    授权登录        
  </button>

  //1. 先获取一个临时凭证 conde 
      wx.login({
    
    
        success:((data:any) =>{
    
    
          console.log(data.code);
          /*
          2. 用这个code + addId + 凭证码 
          获取三个id:
             openid每个用户的固定id 
             session_key 临时的会话存储屏障
          */ 
         wx.request({
    
    
           url:`https://api.weixin.qq.com/sns/jscode2session?appid=${
      
      'wx335092cd7d3d5913'}&secret=6f72afe90a97bc949268fa6292d0f2&js_code=${
      
      data.code}&grant_type=authorization_code`,
           success:(res) =>{
    
    
             console.log(res.data);
            // 把数据存到本地
             wx.setStorageSync('UID',res.data)
            // 3.  使用 getUserInfo 获取用户的信息
            // 获取用户是否授权
             wx.getSetting({
    
    
               success(res){
    
    
                 console.log(res);
                 if(res.authSetting['scope.userInfo']){
    
    
                  //  已经授权 可以直接调用  getUserInfo 获取用户的信息 头像..
                  wx.getUserInfo({
    
    
                    success(res){
    
    
                      console.log(res);
                    }
                  })
                  /*
                   新的 api 
                    wx.getUserProfile()
                  */ 
                 }
               }
             })
           }
         })
    })
})

后面还有好多笔记,待更新…

猜你喜欢

转载自blog.csdn.net/qq_54753561/article/details/123884689