0

0

0

修罗

站点介绍

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

微信小程序开发(二)

修罗 2022-03-16 1300 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)


最新评论

  • https://www.studyglobus.com/author/carroll34a5552/

    Ценники на вывоз мусора сейчас космос, любые лайфхаки по экономии в тему.

  • Richardgrold

    1xbet onlayn kazino platforması ilə vaxtınızı daha səmərəli və maraqlı keçirin. Saytın canlı kazino bölməsi istifadəçilərə fərqli bir dünya təklif edir. Burada canlı dilerli kazino oyunlarının hər bir növünü sınaqdan keçirə bilərsiniz. Krupyelərin peşəkarlığı oyunun dinamikasını və marağını artırır. Müntəzəm olaraq yenilənən oyun siyahısı cansıxıcılığa yol vermir. Hesabınızı artırmaq üçün onlarla fərqli və etibarlı üsul mövcuddur. Qazanılan pullar cəmi bir neçə dəqiqə ərzində şəxsi hesabınıza köçürülür. Aktiv fəaliyyətinizə görə fərdi bonuslar və hədiyyələr qazana bilərsiniz. Dəstək xidməti həm çat, həm də e-poçt vasitəsilə kömək göstərir. 1xbet ailəsinə qoşulun və böyük uduşlar üçün ilk addımı atın. onlayn kazino

  • 砂岩白丘

    我一直梦想, 看到你们相册那样的地方。真棒。

  • 城市地標

    我喜欢, 这里分享真实经验。你的项目 就是 属于这里的。请继续。

  • 宗教地標

    我热爱这样的想法, 去那么多国家。真的很鼓舞。

  • 觀景高地

    能感受到热爱。继续保持 感受。

  • 最佳季節

    我关注这样的资源, 写得很实在。你的网站 就是 属于这里的。加油。

  • 1

    1

  • 1

    1

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

    1

日历

2026年07月

   1234
567891011
12131415161718
19202122232425
262728293031 

文章目录

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