微信小程序基本使用2:wxs,组件的使用以及弹窗、滚动条

这篇具有很好参考价值的文章主要介绍了微信小程序基本使用2:wxs,组件的使用以及弹窗、滚动条。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WXS

WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

可以在模版中内联少量处理脚本,丰富模板的数据预处理能力。

wsx 在IOS设备上性能是JavaScript的2-20倍

内嵌式

<view>
  <view>{{m1.toUpper(message)}}</view>
</view>
<wxs module="m1">
  module.exports.toUpper = function(str){
    return str.toUpperCase();
  }
</wxs>

module=“属性值”

关联式

<view>
  <view>{{m2.toLower(message)}}</view>
</view>
<wxs src="/utils/tools.wxs" module="m2"/>

在utils下创建文件tools.wxs

// wxs
function toLower(str){
  return str.toLowerCase();
}

module.exports = {
  toLower : toLower
  // 起别名 : 方法名
}

在wxs文件中直接写方法,最后通过module.exports暴露出来

组件Components

组件相当于是自定义标签

组件创建:创建文件夹 – > 右键文件夹创建component

局部

局部配置只能在配置的页面上使用,单独在页面的JS文件中配置

在需要引用组件的页面的JSON文件中配置

{
  "usingComponents": {
    "my-com" : "/components/test1/test1"
  }
}

wxml文件中引用

<view>
  <my-com></my-com>
</view>

引用组件的页面会显示组件的wxml文件中的内容

全局

全局配置所有页面都可以用,在App.js中配置:

在windows同级下编写一下代码

"usingComponents": {
  "my-com" : "/components/test1/test1"
}

组件的样式隔离

app.wxss 中的全局样式 对组件无效的

只有class选择器会有样式的隔离效果 id选择器 属性选择器 标签选择器 不受样式隔离限制

  1. 方式一:

    在组件中的json文件下配置

    {
      "component": true,
      "usingComponents": {},
      "styleIsolation": "isolated"
    }
    
  2. 方式二:

    在组件的js文件中配置

    options:{
      styleIsolation : "isolated"
    }
    

属性值:

  • isolated 表示启用样式隔离,在自定义组件内外,使用 class 指定的样式将不会相互影响(一般情况下的默认值);
  • apply-shared 表示页面 wxss 样式将影响到自定义组件,但自定义组件 wxss 中指定的样式不会影响页面;
  • shared 表示页面 wxss 样式将影响到自定义组件,自定义组件 wxss 中指定的样式也会影响页面和其他设置了 apply-sharedshared 的自定义组件。(这个选项在插件中不可用。)

组件传值

组件要接收调用者传来的值,并显示到页面上,实现步骤:

在组件的js文件properties属性列表中定义参数名

properties: {
  max : {
    type : Number,      // 定义参数类型
      value : 20				// 默认值,若页面上没传参数,默认值为20
  }
}

组件的wxml文件

<view class="classA">
  <view>接收到的参数是:{{max+1}}</view>
</view>

引用组件的页面(组件的调用者)

<view>
  <my-com max="10" ></my-com>   //  传参的参数名="参数值"
</view>

调用页面上显示11,如果没传,则显示默认值 20 +1 = 21

组件的properties

在小程序 properties 和 data 的数据用法相同 都是可以读写的 但是

  • data更倾向于私有数据

  • properties 更倾向于存储对外接收到的数据

  • 本质上没有区别

组件方法

组件方法与页面方法不同在于组件方法都需要定义在methods中

组件数据监听器

数据的监听 用于监听和响应任何的属性和数据字段的变化 ,从而执行特定的操作

eg:sum = a + b ; sum随着a和b的变化而发生改变

组件的wxml文件

<view>
  {{a}} + {{b}}  = {{sum}}
</view>
<button type="default" size="mini" bind:tap="addA" >A++</button>
<button type="default" size="mini" bind:tap="addB" >B++</button>

组件的js文件

	/**
   * 组件的初始数据
   */
  data: {
    sum : 0,
    a : 0,
    b : 0,
  },

  /**
   * 组件的方法列表
   */
  methods: {
    addA(){
      this.setData({
        a : this.data.a +1
      });
    },
      addB(){
        this.setData({
          b : this.data.b +1
        });
      }
  },
    // 监听器
    observers:{
      'a,b':function(a,b){
        this.setData({
          sum : a + b
        })
      }
    }

监听器使用observers定义,与methods同级,写需要监听的数据'a,b',函数中写需要执行的操作;如果需要监听对象的属性,写对象名.属性名

纯数据字段

不需要渲染到页面的data字段;纯数据字段 有助于提升页面的更新性能

实现步骤:

  1. 定义纯数据字段规则

    options与data同级

    options:{
      // 定义纯数据字段规则
      pureDataPattern : /^_/ ,   // 指定所有以_开头的为纯数据字段
    },
    

    如果初始化数据以下划线开头,就是纯数据字段

  2. 定义初始化数据

    // js
    data: {
      _n : true,
      m : false
    }
    
  3. 组件引用

    组件的wxml文件

    <rich-text nodes="<h1>{{_n}}</h1>"/>
    <rich-text nodes="<h1>{{m}}</h1>"/>
    

    页面上会显示false,不会显示纯数据字段true

组件的生命周期函数

组件的生命周期

生命周期 参数 描述 最低版本
created 在组件实例刚刚被创建时执行 1.6.3
attached 在组件实例进入页面节点树时执行 1.6.3
ready 在组件在视图层布局完成后执行 1.6.3
moved 在组件实例被移动到节点树另一个位置时执行 1.6.3
detached 在组件实例被从页面节点树移除时执行 1.6.3
error Object Error 每当组件方法抛出错误时执行 2.4.1

组件所在页面的生命周期函数

生命周期 参数 描述 最低版本
show 组件所在的页面被展示时执行 2.2.3
hide 组件所在的页面被隐藏时执行 2.2.3
resize Object Size 组件所在的页面尺寸变化时执行 2.4.0
routeDone 组件所在页面路由动画完成时执行 2.31.2

注意:自定义 tabBar 的 pageLifetime 不会触发。

eg:组件的js文件

  lifetimes:{
    attached:function(){
      console.log("在组件实例进入页面节点树时执行");
    },
      detached : function(){
        console.log("在组件实例被从页面节点树移除时执行");
      }
  },
  pageLifetimes:{
    show: function() {
      // 页面被展示
      console.log("页面被展示");
    },
      hide: function() {
        // 页面被隐藏
        console.log("页面被隐藏");
      },
        resize: function(size) {
          // 页面尺寸变化
          console.log("页面尺寸变化");
        }
  }

组件插槽

与Vue中的插槽相似

单插槽

实现步骤:

在组建的wxml文件中定义插槽

<view>
  <slot></slot>
</view>

调用组件的页面中

<my-com>
  <component-tag-name>
    <view>这是插槽的内容</view>
  </component-tag-name>
</my-com>

多插槽

实现步骤:

  1. 在组件的配置文件中开启多插槽支持

    组件的js文件

    options:{
      multipleSlots: true  // 在组件定义时的选项中启用多slot支持
    }
    
  2. 定义插槽

    组件的wxml文件,需要给<slot></slot>标签name属性

    <view>
        <slot name="before"></slot>
        <view>------分割线---------</view>
        <slot name="after"></slot>	
    </view>
    
  3. 调用页面

    使用时需要使用slot=""说明是那个插槽

    <my-test2>
      <view slot="after">after</view>
      <view slot="before">before</view>
    </my-test2>
    

弹窗

页面提示

icon的合法值:

合法值 说明
success 显示成功图标,此时 title 文本最多显示 7 个汉字长度
error 显示失败图标,此时 title 文本最多显示 7 个汉字长度
loading 显示加载图标,此时 title 文本最多显示 7 个汉字长度
none 不显示图标,此时 title 文本最多可显示两行,1.9.0及以上版本支持
wx.showToast({
  title: '提示',
  icon: "success",
  mask: true,       // 不允许点击页面
  duration : 5000   // 持续时间
})

模态对话框

带有取消和确定按钮的弹窗

wx.showModal({
  title: '提示',
  content: '确认要取消么',
  complete: (res) => {
    if (res.cancel) {
      // 取消执行
    }
    if (res.confirm) {
      // 确认执行
    }
  }
})

加载提示

属性 类型 默认值 必填 说明
title string 提示的内容
mask boolean false 是否显示透明蒙层,防止触摸穿透
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

eg:

wx.showLoading({
  title: '加载中',
})
setTimeout(function () {
  wx.hideLoading()
},2000)

注意:需要手动关闭

选项对话框

属性 类型 默认值 必填 说明
alertText string 警示文案
itemList Array.<string> 按钮的文字数组,数组长度最大为 6
itemColor string #000000 按钮的文字颜色
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)
wx.showActionSheet({
  itemList: ['A', 'B', 'C'],
  success (res) {
    // 输出选择的下标
    console.log(res.tapIndex)
  },
  fail (res) {
    console.log(res.errMsg)
  }
})

滚动条

onPageScroll:页面滚动触发事件的处理函数

属性 类型 说明
scrollTop Number 页面在垂直方向已滚动的距离(单位px)

wx.pageScrollTo:将页面滚动到目标位置,支持选择器和滚动距离两种方式定位

属性 类型 默认值 必填 说明
scrollTop number 滚动到页面的目标位置,单位 px
duration number 300 滚动动画的时长,单位 ms
selector string 选择器
offsetTop number 偏移距离,需要和 selector 参数搭配使用,可以滚动到 selector 加偏移距离的位置,单位 px
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

案例:回到顶部按钮的实现

js文件:定义方法

data: {
  no_scroll: true
},
goTop() {
  if (wx.pageScrollTo) {
    wx.pageScrollTo({
      scrollTop: 0
    })
  }
},
  onPageScroll(e){
    if(e.scrollTop > 300){
      this.setData({
        no_scroll:false
      })
    }else{
      this.setData({
        no_scroll:true
      })
    }
  }

wxml文件:

<view hidden="{{no_scroll}}" bind:tap="goTop" class="fix_bo"></view>

wxss文件:文章来源地址https://www.toymoban.com/news/detail-780744.html

.fix_bo{
  width: 77rpx;
  height: 77rpx;
  opacity: .4;
  border-radius: 100%;
  background-color: black;
  position: sticky;
  bottom: 80rpx;
  left: 87%;
  color: white;
  font-size: larger;
  text-align: center;
  line-height: 77rpx;
}

到了这里,关于微信小程序基本使用2:wxs,组件的使用以及弹窗、滚动条的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序使用editor富文本编辑器 以及回显 全屏弹窗的模式

      以上是富文本的值返回接收的地方 下面是富文本的html 记录一下使用方法 也可以参考一下怎么使用

    2024年02月12日
    浏览(57)
  • 微信小程序WXS模块的使用

    common.wxs var foo=“‘hello world’ from common.wxs” //inArray方法 判断数组中是否存在某元素 function inArray(arr,val){ return arr.indexOf(val)-1 } var msg=“some msg” //module 对象 每个 wxs 模块均有一个内置的 module 对象。 //属性 exports: 通过该属性,可以对外共享本模块的私有变量与函数。 module.

    2024年04月13日
    浏览(37)
  • 微信小程序数据交互------WXS的使用

                                                      🎬 艳艳耶✌️:个人主页                                                   🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》                                                   ⛺️ 越努力 ,越幸运

    2024年02月05日
    浏览(59)
  • 微信小程序|自定义弹窗组件

    2024年02月12日
    浏览(43)
  • 微信小程序 view组件的基本使用

    能看图就尽量减少文字提示,从图书可以看出ABC是纵向排列的。 为什么会纵向排列而不是横向排列,那是因为view是块元素,能占满整一行。 怎么让view块元素横向并排呢?  向上图一样横向排列,接下来教学从0开始 高手看看即可,小白咱们是一条船上的,一起来学。  先打

    2024年02月02日
    浏览(74)
  • “编辑微信小程序与后台数据交互与微信小程序wxs的使用“

    在现代移动应用开发中,微信小程序已经成为了一个非常流行和广泛使用的平台。为了使小程序能够展示丰富的内容和实现复杂的功能,与后台数据的交互是至关重要的。同时,微信小程序还提供了一种特殊的脚本语言——wxs,用于增强小程序的业务逻辑处理能力。本篇博客

    2024年02月08日
    浏览(49)
  • uniapp微信小程序自定义弹窗组件

    写一个能够复用的弹窗组件,内容包括: \\\"标题\\\",\\\"图片\\\",\\\"描述内容\\\",\\\"按钮\\\". 且按钮可能会有多中功能(比如: 点击按钮可能只是关闭弹窗,或者关闭弹窗并跳转) 1.创建弹窗组件 popup-view 1.小编这里考虑组件全局都有可能会用到,就在主包的 components 文件夹下创建popup-view组件 2.组件内

    2024年02月04日
    浏览(40)
  • 微信小程序连接数据库与WXS的使用

      🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《 微信小程序开发实战 》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待

    2024年02月08日
    浏览(51)
  • 微信小程序之首页-后台交互及WXS的使用

    目录 前言  一. 前后台数据交互及封装request 1.准备后台 1.1 配置数据源  1.2 部分后台获取数据方法编写 2.准备前端 2.1封装Request 2.2 前端JS方法编写 2.3 前端页面展示index.wxml 二.WXS的使用 1.简介 2.WXS优化OA系统  2.1 使用及定义 2.2 导入要使用的项目 2.3 优化会议状态 2.4 优化人

    2024年02月08日
    浏览(52)
  • 微信小程序:如何在{{}}中使用函数?WXML+WXS

    在原生小程序的项目中或有这种需求,就是在wxml页面中调用方法 但是微信原生小程序 无法直接使用像vue里面的计算属性,监听啦啥的这种,也不能调用js中的方法。  既然{{}}中无法调用js中的函数,那该怎么办呢? 微信提出了一种新的概念,WXS(WeiXin Script) ,小程序的一套脚

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包