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

相关推荐
游戏开发爱好者82 小时前
iPhone HTTPS 抓包实战指南,移动端加密流量分析、代理解密失败排查与底层数据流捕获
android·ios·小程序·https·uni-app·iphone·webview
雪碧聊技术8 小时前
前端项目代码发生改变,如何重新部署到linux服务器?
前端·vue3·centos7·代码更新,重新部署
liulilittle9 小时前
C++ 浮点数封装。
linux·服务器·开发语言·前端·网络·数据库·c++
wordbaby9 小时前
Expo 进阶指南:赋予 TanStack Query “原生感知力” —— 深度解析 AppState 与 NetInfo
前端·react native
Moment9 小时前
从美团全栈化看 AI 冲击:前端转全栈,是自救还是必然 🤔🤔🤔
前端·后端·面试
天问一9 小时前
使用 Vue Router 进行路由定制和调用的示例
前端·javascript·vue.js
韩立学长11 小时前
【开题答辩实录分享】以《基于Vue的非遗文化知识分享平台的设计与实现》为例进行选题答辩实录分享
前端·javascript·vue.js
优弧11 小时前
离开舒适区100天,我后悔了吗?
前端·后端·面试
胡gh11 小时前
css的臂膀,前端动效的利器,还是布局的“隐形陷阱”?
前端·css·html
灵感菇_11 小时前
Flutter Riverpod 完整教程:从入门到实战
前端·flutter·ui·状态管理