返回顶部
首页 > 资讯 > 精选 >微信小程序调起键盘性能优化的方法
  • 409
分享到

微信小程序调起键盘性能优化的方法

2023-06-26 08:06:50 409人浏览 泡泡鱼
摘要

本篇内容主要讲解“微信小程序调起键盘性能优化的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序调起键盘性能优化的方法”吧!需求分析最近在项目中有一个需求,是从列表页点击评论按钮进入详

本篇内容主要讲解“微信小程序调起键盘性能优化的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习微信小程序调起键盘性能优化的方法”吧!

需求分析

最近在项目中有一个需求,是从列表页点击评论按钮进入详情页时,在加载完页面后自动调起键盘进入评论状态。从需求来看,我们应该在onReady函数中调起键盘,因为onReady函数是在页面初次渲染完成时被调用。但是在实践中我们发现,对于一些配置不好的手机,其加载页面速度较慢,在onReady函数调用时页面并没有渲染完毕,就会导致placeholder和input组件位置错乱的现象。其本质原因是,onReady生命周期函数并不能在调用时承若已经将页面渲染完成了。(尽管文档中描述是已经完成了。)

之前的操作是在onReady生命周期函数中调起键盘。

this.setData({ focus: true })复制代码

发现这个问题后做了相应的延迟处理

setTimeout(() => {  this.setData({ focus: true })}, 300)复制代码

但这是治标不治本的方法,手机性能好的用户会无谓的等待300毫秒,而手机性能很差的用户等待300毫秒也不一定就能解决这个问题。

解决思路

那么既然小程序并没有提供给我们一个理想的渲染结束后的回调函数,那么我们就换个思路: 使用短轮询来处理,当页面渲染完成后才调起键盘的操作。

既然要使用短轮询,那么我们去轮询什么呢?什么标志代表着页面渲染完成了呢?在这里,我是使用 wx.createSelectorQuery() 方法,它会返回一个SelectorQuery对象实例,在这个实例上调用select方法选择我想要去轮询的节点,在回调函数中判断参数是否为 null 。如果返回了监控的节点信息,那么说明已经渲染完成。这时就可以进行键盘调起操作了。

let timer = setInterval(() => {  wx.createSelectorQuery().select('#comment-section').boundinGClientRect(rect => {    if (rect !== null && timer !== null) {      clearInterval(timer)      timer = null      this.setData({ focus: true })    }  }).exec()}, 50)复制代码

在此之上,如果我们只粗暴的让 focus 为 true 并不是个明智的做法。

在调起键盘时默认页面会上推,如果在评论很少的情况下这样的体验并不好。所以需要判断一个高度,超过这个值就上推,没超过就不上推。这个值视实际情况而定。 上推的操作是由input组件的 adjust-position 属性决定,为true则上推,否则则不上推。这时回调返回的参数中的节点信息就可以派上用场了。

// 在this.setData({ focus: true })前对节点高度进行判断if (rect.height < 500) this.setData({ push: false })else this.setData({ push: true })复制代码

onBlur函数问题

在实际的操作中,我们发现在键盘被调起后会有概又自动收回。经过排查发现时onBlur函数的问题,在onBlur函数中,我们手动的设置 focus 为 false ,但其实并不需要这一步操作,反而带来了副作用。在我们去除了这部分代码后,键盘自动收起的问题得到了解决。

封装起来

虽然我们完成了这次任务的需求,但是显而易见的,这样的任务在未来肯定还会再次出现。所以机智的我们应该赶快把整套流程封装起来,以便下次直接调用。

 

那么这时我们使用的方式就是这样的:

const Util = require("xxx") // 引入封装的库onReady: function () {  Util.onTotalReady('#comment-section', 50, rect => {    if (rect.bottom < 500) this.setData({ push: false })    else this.setData({ push: true }}    this.setData({ focus: true })  })}复制代码

在解决键盘调起的这个过程中我们可以看出微信小程序开发流程的简陋,这个问题的出现本质上是小程序提供给我们的生命周期函数的不够准确。否则在页面渲染完成的情况下我怎么会拿不到节点信息呢?像React中的componentWillMount生命周期函数中就不会出现这样的问题,所以希望小程序能再变强大一些,也让我们少写一点这种hack代码。

到此,相信大家对“微信小程序调起键盘性能优化的方法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 微信小程序调起键盘性能优化的方法

本文链接: https://lsjlt.com/news/308355.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序调起键盘性能优化的方法
    本篇内容主要讲解“微信小程序调起键盘性能优化的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序调起键盘性能优化的方法”吧!需求分析最近在项目中有一个需求,是从列表页点击评论按钮进入详...
    99+
    2023-06-26
  • 微信小程序如何实现调起键盘性能优化
    这篇文章主要介绍微信小程序如何实现调起键盘性能优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在小程序中,我们经常有调起键盘的操作场景,但是在不同的场景下解决方案不尽相同,还是需要...
    99+
    2024-04-02
  • 微信小程序性能如何优化
    这篇文章主要介绍了微信小程序性能如何优化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序性能如何优化文章都会有所收获,下面我们一起来看看吧。为什么要做性能优化?一切性能优化都是为了体验优化1. 使用小程...
    99+
    2023-06-26
  • 微信小程序中怎么优化性能
    微信小程序的性能优化可以从多个方面入手,以下是一些优化性能的方法: 减少页面的渲染元素和层数:尽量减少页面中的元素数量和嵌套层数...
    99+
    2024-04-09
    微信小程序
  • 小程序redux性能优化的方法
    这篇文章主要介绍“小程序redux性能优化的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“小程序redux性能优化的方法”文章能帮助大家解决问题。首先了解小程序的工作原理和性能关键点。1工作原理...
    99+
    2023-06-26
  • 微信小程序渲染性能调优的示例分析
    小编给大家分享一下微信小程序渲染性能调优的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!小程序的双线程架构与传统的浏览器Web页面最大区别在于,小程序的是基于 双线程 模型的,在这...
    99+
    2024-04-02
  • 微信小程序API调起客户端小程序设置界面的方法
    这篇文章主要介绍“微信小程序API调起客户端小程序设置界面的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序API调起客户端小程序设置界面的方法”文章能帮助大家解决问题。wx.openS...
    99+
    2023-06-26
  • 微信小程序代码包大小的优化方法
    这篇文章主要讲解了“微信小程序代码包大小的优化方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序代码包大小的优化方法”吧!setDatasetData是小程序开发中使用最频繁的接口...
    99+
    2023-06-26
  • 微信小程序工具程序调试的方法
    今天小编给大家分享一下微信小程序工具程序调试的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。程序调试主要有三大功能区:模...
    99+
    2023-06-26
  • 微信小程序调用子组件的方法
    通过父组件的selectComponent方法获取子组件实例,然后调用其定义的方法。例如: // 在父组件中调用const childComponent = this.selectComponent('#myChild');childC...
    99+
    2023-09-14
    微信小程序 小程序
  • 微信小程序的调试方法是什么
    今天就跟大家聊聊有关微信小程序的调试方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。控制器index.js 仅仅采取静态的代码走查还不够,我们需要将微信小程序启动起来,通过单...
    99+
    2023-06-05
  • 微信小程序转盘抽奖的实现方法
    本文实例为大家分享了微信小程序实现转盘抽奖的具体代码,供大家参考,具体内容如下 lucky-draw.wxss: .lucky_draw_zp{ width: 502rpx; hei...
    99+
    2024-04-02
  • 微信小程序中如何调用scale方法
    这篇文章主要介绍“微信小程序中如何调用scale方法”,在日常操作中,相信很多人在微信小程序中如何调用scale方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序中如何调用scale方法”的疑惑有所...
    99+
    2023-06-26
  • 如何优化PHP开发的微信小程序?
    如何优化PHP开发的微信小程序?随着微信小程序的普及,越来越多的开发者开始关注如何优化微信小程序的开发。在开发中,PHP是一种常用的后端语言,它提供了丰富的功能和严密的安全性。下面将介绍一些优化的方法和具体代码示例,以帮助开发者更好地使用P...
    99+
    2023-10-27
    优化 微信小程序 PHP开发
  • 微信小程序格式化方法怎么用
    这篇文章主要介绍了微信小程序格式化方法怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序格式化方法怎么用文章都会有所收获,下面我们一起来看看吧。util.js这段代码包含3个段落,按照参照关系逐一说...
    99+
    2023-06-19
  • 微信小程序的开发方法
    本篇内容主要讲解“微信小程序的开发方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序的开发方法”吧!1、准备工作用没有注册过微信公众平台的邮箱注册一个微信公众号, 申请帐号 , 根据指...
    99+
    2023-06-29
  • 微信小程序运营的方法
    这篇文章主要介绍了微信小程序运营的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序运营的方法文章都会有所收获,下面我们一起来看看吧。  1、装饰打造  用一个例子来说明,比如一家服装店。某服装店为了...
    99+
    2023-06-26
  • 微信小程序注册的方法
    这篇文章主要介绍“微信小程序注册的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序注册的方法”文章能帮助大家解决问题。方式一:通过微信公众号(已认证的企业类型)快速注册快速注册认证小程序...
    99+
    2023-06-26
  • 使用微信小程序API,调用微信的各种内置能力。
    目录一、WXML 渲染语法二、客户端数据储存三、远程数据请求四、<open-data>组件五、获取用户个人信息六、多页面的跳转七、wx.navigateTo()微信小程序...
    99+
    2022-12-03
    微信小程序内置API 小程序API
  • 微信小程序怎么调动用户的活跃性
    这篇文章主要讲解了“微信小程序怎么调动用户的活跃性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序怎么调动用户的活跃性”吧!一、如何使用优惠券优惠券可降低产品的价格,是一种常见的消费...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作