微信小程序笔记

196 阅读3分钟

1. 小程序中常用的事件

1. tap bindtap或者bind:tap 类似于HTML中的点击事件
2. input bindinput或者bind:input 文本框的输入事件
3. change bindchange或bind:change 状态改变的事件 

1.1 bindtap和catchtap的区别

bindtap事件会发生事件往上冒泡,catchtap会阻止事件冒泡

2. 小程序传承的方法

2.1 属性绑定传参

   1. 可以使用data-属性传递参数
   <view bindtap="playTap" data-name="cowBoy" data-like="羽毛球"></view>
    
   2.获取值
   playTap:function(e) {
      console.log(e.currentTarget.dataset);    
      // {name:"cowBoy",like:"羽毛球"}
   }

注意:data-中,不允许有大写字母,且不能存放对象

2.2 声明式导航传参

navigate 组件的 url 属性用来指定将要跳转到的页面的路径。同时,路径的后面还可以携带参数:参数与路径之使用 ? 分隔参数键与参数值用 = 相连,不同参数用 & 分隔

<navigator url="/pages/message/message?name=zs&age=20">消息页面</navigator>

3. 全局样式和局部样式

  1. 全局样式: 在 app.wxss 文件中定义的样式为全局样式,作用于每一个页面。

  2. 局部样式: 在页面的 .wxss 文件中定义的样式为局部样式,只作用于当前页面。

注意:

  1. 当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式。

  2. 当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式。

4. 条件渲染

4.1 wx:if

在小程序中,使用 wx:if="{{ condition }}" 来判断是否需要渲染该代码块,当wx:if={{true}}时候显示,false时则隐藏。

<view wx:if="{{ condition }}">True</view>
<!-- 也可以使用 wx:elif 和 wx:else 来添加判断 -->

<view wx:if="{{ type === 1 }}"></view>
<view wx:elif="{{ type === 2 }}"></view>
<view wx:else>保密</view>

结合 标签使用 wx:if

如果要一次性控制多个组件的展示与隐藏,可以使用一个 标签将多个组件包装起来,并在 标签上使用 wx:if 控制属性。 标签只起包裹作用,不参与页面渲染。

<block wx:if="{{true}}">
<view>view1</view>
    <view>view2</view>
</block>

4.2 hidden

在小程序中,直接使用 hidden="{{ condition }}" 也能控制元素的现实与隐藏

<view hidden="{{ condition }}">条件为 true 隐藏,条件为 false 显示</view>

4.3 wx:if 与 hidden 比较

wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏

hidden 通过控制样式的方式(display: none/block)控制元素的现实与隐藏

频繁切换是,建议使用 hidden,减少重绘与回流

控制条件复杂时,建议使用 wx:if 搭配 wx:elif、wx:else 进行展示与隐藏的切换 (开发当中,考虑性能更好)

5. 自定义组件

一般情况下,自定义组件在components 文件中,首先创建文件夹,然后右键选中components 创建与文件夹相同的组件。

6. 路由跳转

注意:(小程序中页面栈最多十层,我们在开发微信小程序中,页面跳转时要考虑页面栈问题)
  1. wx.switchTab(Object object)

    只能跳转到tabBar页面,并关闭其他所有非tabBar页面

  2. wx.reLaunch(Object object)

    关闭所有页面,打开到应用内的某个页面

  3. wx.redirectTo(Object object)

    关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。

  4. wx.navigateTo(Object object)

    保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。

  5. wx.navigateBack(Object object)

    关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。

未完毕待继续....