您好,登錄后才能下訂單哦!
本篇內容主要講解“React Native中如何實現確認碼組件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“React Native中如何實現確認碼組件”吧!
確認碼控件也是一個較為常見的組件了,乍一看,貌似較難實現,但實則主要是障眼法。
上圖 CodeInput
組件的 UI 結構如下:
<View style={[styles.container]}> <TextInput autoFocus={true} /> <View style={[styles.cover, StyleSheet.absoluteFillObject]} pointerEvents="none"> {cells.map((value: string, index: number) => ( <View style={[styles.cell]}> <Text style={styles.text}>{value}</Text> </View> ))} </View> </View>
TextInput
用于彈出鍵盤,接收用戶輸入,在它上面使用絕對定位覆蓋了一個用于旁路顯示的 View[style=cover]
。
這就是 CodeInput
的實現原理了。
需要注意以下幾個點:
設置 TextInput
的 autoFocus
屬性,控制進入頁面時是否自動彈出鍵盤。
設置作為覆蓋物的 View[style=cover]
的 pointerEvents
屬性為 none
,不接收觸屏事件。這樣當用戶點擊該區域時,底下的 TextInput
會獲得焦點。
設置作為容器的 View[style=container]
的高度,這個高度就是數字單元格的寬高。使用 onLayout
回調來獲得容器的高度,用來設置數字單元格的寬高。
const { onLayout, height } = useLayout() const size = height return ( <View style={[styles.container, style]} onLayout={onLayout}> <TextInput /> <View style={[styles.cover, StyleSheet.absoluteFillObject]}> {cells.map((value: string, index: number) => ( <View style={[ styles.cell, { width: size, height: size, marginLeft: index === 0 ? 0 : spacing } ]}> <Text style={styles.text}>{value}</Text> </View> ))} </View> </View> )
cells
是一個字符數組,用于存放數字單元格的文本內容,它的長度是固定的。它的內容由用戶輸入的值拆分組成,如果長度不夠,則填充空字符串 ""
。
export default function CodeInput({ value, length = 4 }) { const cells = value.split('').concat(Array(length - value.length).fill('')) }
到此,相信大家對“React Native中如何實現確認碼組件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。