uni-app项目支付宝端Input不受控

前情

最近又接手一个全新多端项目,包括抖音/快手/微信/支付宝,其中就有支付宝端,需要实现一个SKU选择,同时需要控制选择的商品数量,如下图

坑位

既然是选择商品数量,那就不能让它出现小于等于0的数,我的想法是通过表单的input事件触发限制方法,限制它的值只允许在外面传进来的minmax之间的值,我这里设置的是199,也就是它的值只能为1~99,通过左右加减是可以做到控制的,但是为更好的体验,允许用户直接输入数量

关键代码如下:

jsx 复制代码
<template>
    <input
      v-model="inputValue"
        controlled
      type="number"
      class="stepper-input"
      @input="handleInput"
    />
</template>

<script setup>
     // ...
    const inputValue = ref(1);
    // 处理输入框输入
    const handleInput = (e) => {
        const value = e.detail.value;
        // 其中props.min/max是从外面传进来的
        const value = Math.max(props.min, Math.min(props.max, newValue));
        inputValue.value = Number(value);
    };
    // ...
</script>

理想很丰满,现实很骨感,发现在支付宝表单可以输入任何数字,不受控制,但是我在handleInput里打印了日志,事件是有触发的

解决方案

给input加上controlled,让它变成受控组件,此时你修改inputValue的值是可以同步更新的

关键代码如下:

jsx 复制代码
<template>
    <input
      v-model="inputValue"
        controlled
      type="number"
      class="stepper-input"
      @input="handleInput"
    />
</template>

文挡说明如下,文挡地址:input 输入框 - 支付宝文档中心

总结

支付宝小程序开发者应该是受React影响,才会出现受控和非受控,因为这二个概念是React里的

对于这种一端可以另一端不行的问题,一般就是平台的差异兼容问题,可以去对应平台的官方文挡看一下,也许能找到端倪,当然直接搜索引擎搜索也是可以的,对于做技术的我们每天都是在踩坑的路上,但我真心希望所有人都一路生花,少踩坑,也坚信坑坑难爬,坑坑过

相关推荐
vx_vxbs6614 分钟前
【SSM电动车智能充电服务平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·spring cloud·小程序·php·idea
低代码布道师2 小时前
医疗小程序12出诊列表
低代码·小程序
Coder-coco3 小时前
游戏助手|游戏攻略|基于SprinBoot+vue的游戏攻略系统小程序(源码+数据库+文档)
java·vue.js·spring boot·游戏·小程序·论文·游戏助手
小小王app小程序开发18 小时前
盲盒小程序一番赏衍生玩法:魔王赏、非酋赏、狂欢赏差异化分析
小程序
2501_9151063219 小时前
iOS App 测试工具全景分析,构建从开发调试到线上监控的多阶段工具链体系
android·测试工具·ios·小程序·uni-app·iphone·webview
dchen7720 小时前
uniapp实现上拉刷新和下拉刷新的两种方式
uni-app
FinelyYang21 小时前
uniapp+unipush2.0+WebRTC实现h5一对一视频通话
uni-app·音视频·webrtc
天蓝色的鱼鱼1 天前
mescroll老用户亲测z-paging:这些功能让我果断切换!
前端·uni-app
anyup1 天前
🔥100+ 天,已全面支持鸿蒙!uView Pro 近期更新盘点及未来计划
前端·uni-app·harmonyos
半兽先生2 天前
uniapp高性能ui框架uni-ui
ui·uni-app