小程序输入框闪烁BUG解决方案

发表于:2019-1-08 11:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:xxxsimons    来源:思否

  前言
  本人所说的小程序,都是基于mpvue框架而上的,因此BUG可能是原生小程序的,也有可能是mpvue的。
  问题描述
  在小程序input组件中,如果使用v-model进行双向绑定,在输入时会出现光标闪烁的BUG。
  原因
  造成这个BUG的原因,是因为在原生小程序input组件上,进行了封装。才导致光标闪烁的问题。
  解决方案
  这里提供了两种解决方案。各有各的优势,请选取合适的方案:
  一、弃用v-model,使用@input
  适用于input组件单纯是用户手动输入的,而没有像授权获取手机号,然后自动填入input组件中。这种需要赋予初始value的情况。即适用于单向绑定,而不是双向绑定。
   /** 
  * 父组件
  */
  // html
  <childInput @input="onInput"/> <-- 注意这里不能使用:value=value赋予初始值,否则又会出现闪烁的BUG,因为此时就等同于v-model了
  // js
  import ChildInput from './ChildInput'
  export default {
    components:{ ChildInput },
    data(){
      return {
        value:''
      }
    },
    methods(){
      onInput(e){
        this.value = e 
      }
    }
  }
  /** 
  * 子组件 ChildInput
  */
  // html
  <input @input="$emit('input',$event)"/>
  二、不封装input组件,直接使用v-model
  这种情况就是可以直接双向绑定的了。具体原因还不清楚,可能是本身原生小程序的BUG。
   /**
  * 父组件,不使用封装的子组件,直接使用原生组件。
  */
  // html
  <input v-model="value"/>
  // js
  export default {
    data(){
      return {
        value:''
      }
    }
  }

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号