0

0

0

修罗

站点介绍

只有了解事实才能获得真正的自由

微信小程序开发(二)

修罗 2022-03-16 1069 0条评论 微信小程序

首页 / 正文
  • 使用npm库
  • 自定义组件
  • 默认插槽
  • 页面参数传递
  • 组件不能作为flex项目
  • 轮播图
  • border-radius不生效
  • bindtap和catchtap

使用npm库

1、生成package.json文件

1660132661076.png

2、安装vantui

npm i @vant/weapp

!1660132722718.png

3、构建npm

1660132756558.png

4、使用组件

index.json配置vant组件

1660133276181.png

5、页面使用组件

1660133332429.png

自定义组件

新建组件

1660144715535.png

生成4个文件

1660145055421.png

使用自定义组件

1、在需要引用页面的index.json配置

1660145125559.png

2、页面使用此组件,该区域即显示area-header中的内容。

1660145170013.png

自定义组件传值

父传子

在自定义组件中声明prop

1660145299579.png

页面中传递props

1660145384567.png

子传父

子组件

1660146408127.png

父组件

1660146514280.png

直接给子组件监听事件

1660146705507.png

默认插槽

微信小程序不支持给插槽默认值,如<slot><div>hello</div></slot>hello将永远不能生效,可以使用如下写法:

1660146906308.png

使用css控制

/*slot类为空时default类显示*/
.header .slot:empty + .default {
  display: flex;
}

/*default默认不显示*/
.header .default {
  display: none;
  align-items: center;
  font-size: 28rpx;
  color: #777;
}

页面参数传递

navigate跳转页面,onload钩子拿参数

组件作为flex项目

组件作为flex项目会有问题,可以包一层view:

1660147468139.png

轮播图

摸拟数据

[ { bannerId: "1660050051490872", pic: "http://p1.music.126.net/dTP-uxgSYqx_9n2hQQWfww==/109951167764297561.jpg"}, 
 {bannerId: "1660053622001270", pic: "http://p1.music.126.net/W1JSNM9V_3Fn1__MIxHIGQ==/109951167764483820.jpg"} ]

样式

1660135246391.png

<swiper class="swiper"
      indicator-dots
      autoplay
      circular
      style="height: {{swiperHeight}}px;"
      >
  <block wx:for="{{banners}}" wx:key="bannerId">
    <swiper-item class="swiper-item">
      <image class="swiper-image" 
            src="{{item.pic}}" 
            mode="widthFix"
            bindload="handleSwiperImageLoaded"></image>
    </swiper-item>
  </block>
</swiper>

swiperHeight动态计算第一张图片高度设置给轮播图组件

handleSwiperImageLoaded: function() {
  // 获取图片的高度(如何去获取某一个组件的高度)
  queryRect(".swiper-image").then(res => {
    const rect = res[0]
    this.setData({ swiperHeight: rect.height })
  })
}

queryRect,使用时可以用节流函数包裹

https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createSelectorQuery.html

export default function (selector) {
  return new Promise((resolve) => {
    const query = wx.createSelectorQuery()
    query.select(selector).boundingClientRect()
    // query.exec(resolve)
    query.exec((res) => {
      // res有dom宽高和位置信息
      resolve(res)
    })
  })
}

border-radius不生效

加上css属性:

transform:translateY(0)

bindtap和catchtap

bindtap:事件会冒泡;
catchtap:事件不冒泡。

bindtap="onBindtap"
catchtap="onCatchTap"

评论(0)


最新评论

  • 1

    1

  • 1

    1

  • -1' OR 2+158-158-1=0+0+0+1 or 'TKCTZnRa'='

    1

  • 1

    1

  • 1

    1

  • 1

    1

  • 1

    1

  • @@5Qa2D

    1

  • 1

    1

  • 1

    1

日历

2025年09月

 123456
78910111213
14151617181920
21222324252627
282930    

文章目录

推荐关键字: Linux webpack js 算法 MongoDB laravel JAVA jquery javase redis