微信小程序 | 小程序的事件处理

🖥️ 微信小程序 专栏:小程序的事件处理
🧑‍💼 个人简介:一个不甘平庸的平凡人🍬

✨ 个人主页:CoderHing的个人主页

🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️

👉 你的一键三连是我更新的最大动力❤️


目录

一、小程序的事件监听

事件的监听

二、常见事件类型划分

组件的特殊事件

三、事件对象属性分析

事件对象event

currentTarget和target的区别

touches和changedTouches的区别(比较少用到)

四、事件参数传递方法

事件参数的传递

五、事件传递案例练习

六、逻辑传递数据另外一种方式:Mark


一、小程序的事件监听

事件的监听

  • 什么时候会产生事件?
  • 小程序需要经常和 用户进行交互,如点击某个按钮,滑动某个区域;
  • 事件是 视图层到逻辑层的通讯方式
  • 可以将用户的行为反馈到逻辑层 进行处理
  • 事件 可以绑定在组件上,当触发事件时,就会执行逻辑层中对应的事件处理函数
  • 事件对象可以携带额外信息,如: id,dataset,touches

  • 事件如何处理?
  • 通过 bind/catch这个属性 绑定在组件上的(和普通的属性写法相似 以key="value"形式)
  • Key 以 bind或catch开头,从1.5.0版本开始, 可以在bind和catch后加上一个冒号
  • 同时在当前页面的Page构造器中 定义对应的事件处理函数,若没有对应的函数,触发会报错
  • 如 当用户点击 button按钮时,达到触发条件生成事件Tap,该事件处理函数会被执行,同时会受到一个事件对象event

二、常见事件类型划分

组件的特殊事件

  • 某些组件会有自己特性的事件类型
  • 如input有bindinput/bindblur/bindfocus
  • 如scroll-view有bindscrolltowpper/bindscrolltolower

三、事件对象属性分析

事件对象event

  • 当某个事件触发时, 会产生一个事件对象, 这个对象被传入到回调函数中, 事件对象有哪些常见的属性呢?

currentTarget和target的区别

 

JavaScript
js文件代码展示
  onOuterViewTap(event){
    console.log("onOuterViewTap:",event);
    // 1.target表示 => 触发事件的元素
    // 2.currentTarget => 处理事件的元素
    // {type: "tap", timeStamp: 841947, target: {…}, currentTarget: {…}, mark: {…}, …}
    console.log(event.target); // {id: "", offsetLeft: 0, offsetTop: 40, dataset: {…}}
    console.log(event.currentTarget); // {id: "", offsetLeft: 0, offsetTop: 40, dataset: {…}}
    // 这个时候 这两个是没有区别的
    console.log(event.target === event.currentTarget); // false 它内部 可能是 new了两个 target
    // 触发事件的组件:inner/蓝色  处理事件的组件:outer/粉色

    // 3.获取自定义属性 name
    // const name = event.target.dataset.name // 这样是拿不到的 (点击中间蓝色视图)
    const name = event.currentTarget.dataset.name // 那自定义属性,最好使用currentTarget拿
    console.log(name)
  }

touches和changedTouches的区别(比较少用到)

  • touches和changedTouches 都是记录 手指在对屏幕进行触摸时的触摸点
  • 在一个手指 先按住, 过一秒之后,不松开 再陆续对屏幕进行触摸三次(不松手)时,touches此时有4个元素,而changedTouches 只有三个
  • 在touchend中也不同
  •  

四、事件参数传递方法

事件参数的传递

  • 当视图层发生事件时,一些情况是需要事件携带一些参数到执行的函数中, 这个时候就可以通过data-属性来完成:
  • 格式:data-属性的名称
  • 获取: e.currentTarget.dataset. 属性的名称

五、事件传递案例练习

 

六、逻辑传递数据另外一种方式:Mark

 

 

  • 159
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 70
    评论
微信小程序是一种基于微信平台的应用程序,而Vuex是Vue.js框架中用于管理应用程序状态的插件。要在微信小程序监听Vuex的状态变化,可以按照以下步骤进行操作: 1. 在微信小程序的根目录下创建一个`store`文件夹,并在该文件夹下创建一个`index.js`文件。 2. 在`index.js`中引入Vuex和相关的模块文件,同时创建一个Vuex的 Store 实例,例如: ```javascript import Vuex from 'vuex' import moduleA from './moduleA' const store = new Vuex.Store({ modules: { a: moduleA, // 其他模块 }, // 其他配置项 }) export default store ``` 3. 在微信小程序的`app.js`文件中引入刚才创建的`store/index.js`: ```javascript import store from './store/index' App({ store, // 将store注入到app实例中 // 其他配置项 }) ``` 4. 在需要监听Vuex状态变化的页面或组件中,通过`this.$store`可以访问到Vuex的 Store 实例。在`onLoad`生命周期函数中使用`watch`函数监听状态变化: ```javascript Page({ onLoad() { this.watchState() // 监听状态变化 }, watchState() { this.$store.watch( (state) => state.a, // 监听的状态,这里假设我们要监听模块a的变化 (newVal, oldVal) => { console.log('状态变化:', newVal) } ) }, // 其他函数 }) ``` 通过以上步骤,就可以在微信小程序监听Vuex的状态变化了。当状态发生变化时,会触发相应的回调函数,你可以在回调函数中进行相应的操作。注意,这里需要保证引入的Vuex和相关模块文件路径正确,并且需要确保在小程序的`app.js`中将`store`注入到`App`实例中。
评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coderHing[专注前端]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值