react-native-confirmation-code-field
Version:
A react-native component to input confirmation code for both Android and IOS
19 lines (18 loc) • 706 B
JavaScript
import React, { useCallback, useEffect, useState } from 'react';
import { useTimeout } from './useTimer';
export const DEFAULT_BLINKING_SPEED = 500;
export function MaskSymbol({ isLastFilledCell, children: symbol, maskSymbol, delay = DEFAULT_BLINKING_SPEED, }) {
'use memo';
const [visibleFlag, setFlag] = useState(true);
const toggleVisibility = useCallback(function toggleMaskVisibility() {
setFlag((prev) => !prev);
}, []);
useTimeout(toggleVisibility, delay);
useEffect(() => {
if (isLastFilledCell) {
setFlag(false);
}
}, [isLastFilledCell]);
return <>{visibleFlag ? symbol : maskSymbol}</>;
}
MaskSymbol.displayName = 'MaskSymbol';