我是靠谱客的博主 高挑大雁,最近开发中收集的这篇文章主要介绍微信小程序的 tabbar设置 + 列表循环 + 条件渲染 + 事件绑定 + 微信小程序的常用标签,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参考
微信小程序:

我的码云仓库地址:

列表循环:

  1. 当循环的是普通数组时使用这种写法,*this表示的是循环项
    [1,2,3,21,4,66,3] , [‘22’,‘44’,‘7u7’]
wx:key="*this"  
<view wx:for="{{arr}}" wx:for-item="item" wx:for-index="index" wx:key="*this" >
	<view bindtap="EventTab" data-item="{{item}}"></view>
</view>
  1. 当循环的是 Array / Object :
    如果只循环一次,小程序会默认将循环项和索引命名为item和index。所以 wx:for-item="item" wx:for-index="index"在这种情况下可以省略。不写也不会报错。
 wx:key="item"
<view wx:for="{{arr/Obj}}" wx:for-item="item" wx:for-index="index" wx:key="item">
	<view bindtap="EventTab" data-item="{{item}}"></view>
	循环和绑定事件并通过data-item传参
</view>



<view 
class="weui-flex__item" 
wx:for="{{navs}}" 
wx:key="item">
此处就省略了item和index的写入,小程序会默认将选中项和索引命名为item和index。
    <view class="placeholder" 
    	bindtap="tabChange" 
    	data-state="{{item.index}}"
    >
    	{{item.title}}
    </view>
</view>
  1. 当循环对象时,最好把item和index名称都修改一下。
    wx:for-item=“value” wx:for-index=“item.id”
<view wx:for="{{对象}}" wx:for-item="value" wx:for-index="item.id"></view>

全局配置:

1,设置tabBar:

在app.json文件中,与pages同级,添加tabBar{}

"pages":[],
"window":{
    "navigationBarBackgroundColor": "#0094ff", 导航头背景
    "navigationBarTitleText": "来做个电商应用",
    "navigationBarTextStyle":"white",   导航头文字颜色
    "enablePullDownRefresh":true,  允许下拉刷新
    "backgroundTextStyle":"dark",   下来刷新时小圆点的颜色
    "backgroundColor":"#efefef"   下拉刷新时盒子背景颜色
  },
"tabBar": { 设置导航头部和footer
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页",
        "iconPath": "icons/icons/shouye.png",
        "selectedIconPath": "icons/themeicons/shouye.png"
      },
      {
        "pagePath": "pages/sort/sort",
        "text": "分类",
        "iconPath": "icons/icons/zengjia.png",
        "selectedIconPath": "icons/themeicons/zengjia.png"
      },
      {
        "pagePath": "pages/shop/shop",
        "text": "购物车",
        "iconPath": "icons/icons/shoucang.png",
        "selectedIconPath": "icons/themeicons/shoucang.png"
      },
      {
        "pagePath": "pages/mine/mine",
        "text": "我的",
        "iconPath": "icons/icons/ertongpiao.png",
        "selectedIconPath": "icons/themeicons/ertongpiao.png"
      }
    ],
    "color":"#0094aa",  
    "selectedColor":"#ff94aa",
    "backgroundColor":"#eee",
    "position":"bottom"  
},

微信小程序的常用标签

block标签:

属于占位符标签。页面渲染时,小程序会自动将该标签移除。个人理解:类似于template

image标签:

lazy-load属性 。图片懒加载
在这里插入图片描述

text标签:

在这里插入图片描述

swiper标签:

在这里插入图片描述

previewImage:预览大图

<view>
  <swiper autoplay interval="1000" circular indicator-dots indicator-color="aqua" indicator-active-color="pink">
    <swiper-item wx:for="{{scrollList}}" wx:key="item" bindtap="handlePreviewImage" data-imgdata="{{scrollList}}">
      <image src='{{item.src}}' mode="widthFix"></image>
    </swiper-item>
  </swiper>
</view>

<script>
	handlePreviewImage(e) {//在新页面中全屏预览图片,预览过程中用户可以进行保存图片和分享给朋友等操作  					       wx.previewImage(Object object)
      const data = e.currentTarget.dataset.imgdata;
      const urls = data.map(v => v.src);
      const index = ?//当前点击的轮播图片的索引
      wx.previewImage({ 
        current:urls[index],//当前限时图片的http链接
        urls: urls,//需要预览的图片的http链接列表
      })
    }
</script>

给轮播图绑定点击事件,点击轮播图可以预览大图并且可以左右滑动  previewImage

navigator标签:

button标签:

在这里插入图片描述

radio标签:

在这里插入图片描述

less语法:

微信小程序原生并不支持less语法。vscode可以按照插件easy less。

"less.compile":{
	"outExt": ".wxss"
}

在这里插入图片描述

微信小程序条件渲染:

if... if...
<view wx:if="{{true}}">显示</view>
<view wx:if="{{false}}">隐藏</view>

if... else if... else...
<view wx:if="{{true}}">显示</view>
<view wx:elif="{{false}}">隐藏</view>
<view wx:else>888</view>

微信小程序hidden属性:控制标签显隐。不要和display属性结合使用。否则hidden会失效

在标签傻瓜直接添加hidden属性,默认值true。

wx:if和hidden的区别相当于vue的v-if和v-show的区别。
当需要频繁切换时使用hidden和v-show。当不需要频繁切换时使用 wx:if  和 v-if。

微信小程序的事件绑定

  1. bindinput input实现双向绑定
<input type="text" bindinput="handleInput" />

<script>
Page({
	data:{
		num:0
	},
	handleInput(e) {
		let value = e.detail.value;//这就是用户在输入框输入的值
		this.setData({//通过this.setData给data重新赋值
			num: value
		})
	}
})
</script>

  1. bindtap 点击事件 。通过自定义属性进行传参。data-name=" " e.currentTarget.dataset.name
<button bindtap="handletap" data-item="{{77}}" >按钮</button>

<script>
Page({
	data:{
		str:''
	},
	handletap(e) {
		let val = e.currentTarget.dataset.item;
		this.setData({
			str:this.data.str + val;
		})
	}
})
</script>

微信小程序的本地存储:

wx.setStorageSync('name',{})
wx.getStorageSync('name')

在这里插入图片描述
在这里插入图片描述

如何提取接口的公共路径:

在这里插入图片描述

小程序的父子组件之间传值:

  • 父==> 子:
 <!-- tabs="{{tabs}}"表示父组件给子组件传值 -->
   <!-- bindtabsItemChange表示监听子组件向父组件传值,方法名tabsItemChange是自定义的 -->
  <tabs tabs="{{tabs}}" bindtabsItemChange="handlegetTabsItem"></tabs>
  
子组件中js通过properties接收数据
properties: {//接收父元素传递的数据
    tabs:{
      type:Array,
      value:[]
    }
  },
  • 子组件传给父组件:

父组件xml:

<!-- bindtabsItemChange表示监听子组件向父组件传值,方法名tabsItemChange是自定义的 -->
  <tabs tabs="{{tabs}}" bindtabsItemChange="handlegetTabsItem"></tabs>

子组件js:通过this.triggerEvent向父组件传值

methods: {
    handleChangeTitle(e) {
      const index = e.currentTarget.dataset.index;
      console.log(index);
      // 子组件向父组件传值
      this.triggerEvent('tabsItemChange',index);
    }
  }

父组件js:通过e.detail获取子组件传给父组件的参数

 handlegetTabsItem(e) {//子组件向父组件传值触发的事件  接收子组件数据
      console.log(e);
      const index = e.detail;//e.detail获取子组件传给父组件的参数
      const data = this.data.tabs;
      data.forEach((val,i) => i==index?val.isActive=true:val.isActive=false);
      this.setData({
        tabItem:this.data.tabs[index].children,
        tabs:data
      })
    },

应用生命周期:

// app.js
App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  },
  onShow() {//应用呗用户看到时触发
    //对应用数据或者页面效果进行重置
  },
  onHide() {//应用被隐藏时触发
    //暂停或清除定时器
  },
  onError() {
    //应用代码发生报错时触发
  },
  onPageNotFound() {
    //应用第一次启动并找不到入口页面时触发
  },
  globalData: {
    userInfo: null
  }
})

页面生命周期:

微信小程序发送请求使用promise:

在这里插入图片描述

最后

以上就是高挑大雁为你收集整理的微信小程序的 tabbar设置 + 列表循环 + 条件渲染 + 事件绑定 + 微信小程序的常用标签的全部内容,希望文章能够帮你解决微信小程序的 tabbar设置 + 列表循环 + 条件渲染 + 事件绑定 + 微信小程序的常用标签所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部