【taro react】---- 解决 iOS 真机微信小程序 Input 密码框 type 切换会导致 Input 内容丢失问题

本文介绍了在Taro和React.js开发的微信小程序中,遇到iOS真机上Input密码框切换type时内容丢失的问题。通过分析原因并提出解决方案,建议使用两个Input组件分别对应password和text类型,避免因type切换导致的value丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 问题场景

在密码登陆时,有显示和隐藏密码的功能,实现方式很简单,直接对输入 input 的 type 进行 password 和 text 值进行切换,就可以实现密码的显示和隐藏。

2. 实现代码

  1. 通过修改 input 的 type 值实现密码的显示和隐藏。
  2. 密码的显示和隐藏控制图标也是通过 type 值进行判断显示对应图标。
import { View, Input, Image } from '@tarojs/components';
import { useAsyncState } from '@utils/event';
import licon from '@utils/icon/licon';
import api from '@utils/api';
import './index.scss';

const RuiPasswordInput = (props) => {
  let {
    placeholder,
    value = '',
    type = 'password'
  } = props;
  let [new_value, setnew_value] = useAsyncState(value);
  let [new_type, setnew_type] = use
### Taro UI 中 Alinput 组件密码框自动重置问题解决方案 在开发过程中遇到 iOS 真机微信小程序中的 `Input` 密码框因类型切换导致内容丢失问题,可以通过特定方法来规避此现象。一种推荐的方式是采用双输入框策略,即分别创建一个用于显示明文 (`password=false`) 和密文 (`password=true`) 的 `Input` 元素,并通过逻辑控制其显隐状态[^1]。 以下是实现该方案的具体代码示例: ```jsx import React, { useState } from 'react'; import { View, Input } from '@tarojs/components'; const PasswordInput = () => { const [value, setValue] = useState(''); const [isPasswordVisible, setIsPasswordVisible] = useState(false); return ( <View> {/* 显示为明文 */} {!isPasswordVisible && ( <Input type="text" value={value} onInput={(e) => setValue(e.detail.value)} placeholder="请输入密码(明文)" /> )} {/* 显示为密文 */} {isPasswordVisible && ( <Input type="password" value={value} onInput={(e) => setValue(e.detail.value)} placeholder="请输入密码(密文)" /> )} {/* 切换按钮 */} <Button onClick={() => setIsPasswordVisible(!isPasswordVisible)}> {isPasswordVisible ? '隐藏密码' : '显示密码'} </Button> </View> ); }; export default PasswordInput; ``` 上述代码中定义了一个名为 `PasswordInput` 的组件,它利用两个独立的 `Input` 来处理密码的展示形式。当用户点击切换按钮,会动态调整当前可见的 `Input` 类型,而会触发原有值的清空行为。 另外,在实际项目中如果使用到完整的 UI 框架支持,则可以考虑安装并配置 **Taro-UI** 提供的功能模块[^2]。虽然官方文档并未直接提及针对此类场景优化过的内置控件,但开发者可以根据需求自定义扩展或者参考社区分享的经验案例[^3]^。 最后值得注意的是,尽管单独修改属性如 `type` 或者 `password` 可能看似简单快捷,但在某些环境下仍存在兼容性隐患,因此更稳妥的做法始终是分离同模式下的渲染逻辑[^4]。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rattenking

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

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

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

打赏作者

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

抵扣说明:

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

余额充值