ReactNative支付密码输入框实现详解

 更新时间:2022年11月27日 10:53:33   作者:wayne214  
这篇文章主要为大家介绍了ReactNative支付密码输入框实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

项目中需求如果涉及钱包,支付等功能,可以大概率会用到输入密码组件,也算是个常见组件吧。

之前写过一个纯js的开源组件,使用的类的形式,也比较老了,可直接添加npm库到项目中进行使用。

hooks版本

最近项目需要,又重新写了一个hooks版本的,现在直接上源码,对于不想添加依赖库的伙伴,可直接复制源码到项目中,直接使用。

'use strict';
import React, {useRef, useState} from 'react';
import {StyleSheet, View, Pressable, TextInput} from 'react-native';
// 支付密码输入框
const PasswordInput = ({isAutoFocus = false}) => {
    const [msg, setMsg] = useState('');
    const textInputRef = useRef();
    const onEnd = (text: string) => {
        console.log('输入密码:', text);
    };
    const _getInputItem = () => {
        let inputItem = [];
        for (let i = 0; i < 6; i++) {
            inputItem.push(
                <View key={i} style={i === 5 ? [styles.textInputView, {borderRightWidth: 1}] : [styles.textInputView, {borderRightWidth: 0}]}>
                    {i < msg.length ? <View style={{width: 16, height: 16, backgroundColor: '#222', borderRadius: 8}} /> : null}
                </View>,
            );
        }
        return inputItem;
    };
    const _onPress = () => {
        textInputRef?.current.focus();
    };
    return (
        <Pressable onPress={_onPress}>
            <View style={styles.container}>
                <View style={{flexDirection: 'row', marginTop: 36, justifyContent: 'center'}}>
                    <TextInput
                        style={styles.textInputMsg}
                        ref={textInputRef}
                        maxLength={6}
                        autoFocus={isAutoFocus}
                        keyboardType="number-pad"
                        defaultValue={msg}
                        onChangeText={text => {
                            setMsg(text);
                            if (text.length === 6) {
                                onEnd(text);
                            }
                        }}
                    />
                    {_getInputItem()}
                </View>
            </View>
        </Pressable>
    );
};
const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: '#ffffff',
        justifyContent: 'center',
        alignItems: 'center',
    },
    textInputView: {
        height: 85 / 2,
        width: 85 / 2,
        borderWidth: 1,
        borderColor: '#c9c7c7',
        justifyContent: 'center',
        alignItems: 'center',
    },
    textInputMsg: {
        height: 45,
        zIndex: 99,
        position: 'absolute',
        width: 45 * 6,
        opacity: 0,
    },
});
export default PasswordInput;

使用方式就很简单了:

<PasswordInput />

项目库地址链接Github: github.com/wayne214/re…

以上就是ReactNative支付密码输入框实现详解的详细内容,更多关于ReactNative支付密码输入框的资料请关注脚本之家其它相关文章!

相关文章

  • React + Node.js实现图片上传功能

    React + Node.js实现图片上传功能

    最近笔者在开发个人博客的后台管理系统,里面用到了图片上传相关的功能,在这里记录并分享一下,希望可以帮到大家,话不多说直接开始吧,感兴趣的朋友可以参考下
    2024-01-01
  • React Router 5.1.0使用useHistory做页面跳转导航的实现

    React Router 5.1.0使用useHistory做页面跳转导航的实现

    本文主要介绍了React Router 5.1.0使用useHistory做页面跳转导航的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • React18系列commit从0实现源码解析

    React18系列commit从0实现源码解析

    这篇文章主要为大家介绍了React18系列commit从0实现源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Vite+React+TypeScript手撸TodoList的项目实践

    Vite+React+TypeScript手撸TodoList的项目实践

    本文主要介绍了Vite+React+TypeScript手撸TodoList的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • React-Hook中使用useEffect清除定时器的实现方法

    React-Hook中使用useEffect清除定时器的实现方法

    这篇文章主要介绍了React-Hook中useEffect详解(使用useEffect清除定时器),主要介绍了useEffect的功能以及使用方法,还有如何使用他清除定时器,需要的朋友可以参考下
    2022-11-11
  • React中useEffect Hook常见问题及解决

    React中useEffect Hook常见问题及解决

    React的useEffect Hook它允许我们在函数组件中执行副作用操作,但在使用过程中可能会遇到一些常见的错误,本文就来介绍一下常见问题及解决,感兴趣的可以了解一下
    2023-10-10
  • 使用react-color实现前端取色器的方法

    使用react-color实现前端取色器的方法

    本文通过代码给大家介绍了使用react-color实现前端取色器的方法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • React/Redux应用使用Async/Await的方法

    React/Redux应用使用Async/Await的方法

    本篇文章主要介绍了React/Redux应用使用Async/Await的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • React基础-JSX的本质-虚拟DOM的创建过程实例分析

    React基础-JSX的本质-虚拟DOM的创建过程实例分析

    这篇文章主要介绍了React基础-JSX的本质-虚拟DOM的创建过程,结合具体实例形式分析了虚拟dom的基本原理与实现方法,需要的朋友可以参考下
    2023-05-05
  • create-react-app中添加less支持的实现

    create-react-app中添加less支持的实现

    这篇文章主要介绍了react.js create-react-app中添加less支持的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论