import React, { useState, useRef } from 'react'; import { ScrollView, View, Text, TouchableOpacity, Dimensions, } from 'react-native'; import { AutoComplete, AutoCompleteOption, AutoCompleteRef, FloatingLayer, Field, Button, Space, } from '@xrnjs/ui'; import styles from './style'; export default () => { // 基础使用状态 const [basicOptions, setBasicOptions] = useState([]); // 状态演示选项 const [statusOptions] = useState([ { value: '选项1' }, { value: '选项2' }, { value: '选项3' }, ]); // 弹出位置选项 const [placementOptions] = useState([ { value: '选项1' }, { value: '选项2' }, { value: '选项3' }, ]); // 受控组件状态 const [controlledValue, setControlledValue] = useState(''); const [controlledOptions] = useState([ { value: '预设选项1' }, { value: '预设选项2' }, { value: '预设选项3' }, ]); // 高亮演示状态 const [highlightOptions, setHighlightOptions] = useState< AutoCompleteOption[] >([]); // Ref 演示状态 const autoCompleteRef = useRef(null); const [refOptions, setRefOptions] = useState([]); // 高级功能状态 const [advancedOptions, setAdvancedOptions] = useState( [] ); const [showFloatingLayer, setShowFloatingLayer] = useState(false); const maxHeight = Dimensions.get('window').height - 198; // 基础使用处理函数 const handleBasicChange = (value: string) => { console.log('输入值变化:', value); if (!value) { return setBasicOptions([]); } const suggestions = Array.from({ length: 5 }, (_, i) => ({ value: `${value}_选项${i + 1}`, })); setBasicOptions(suggestions); }; const handleBasicSelect = (value: string, option: AutoCompleteOption) => { console.log('选中项:', { value, option }); }; // 受控组件处理函数 const handleControlledChange = (newValue: string) => { setControlledValue(newValue); console.log('受控组件值变化:', newValue); }; const handleControlledClear = () => { setControlledValue(''); }; const handleSetControlledValue = () => { setControlledValue('程序设置的值'); }; // 高亮演示处理函数 const handleHighlightChange = (value: string) => { if (!value) { return setHighlightOptions([]); } const suggestions = [ 'xtrfr', 'xtrfr.cn', 'xtrfr.com', 'xtransfer', 'xtransfer.cn', 'xtransfer.com', ] .filter((item) => item.includes(value.toLowerCase())) .map((item) => ({ value: item })); setHighlightOptions(suggestions); }; // Ref 演示处理函数 const handleRefChange = (value: string) => { if (!value) return setRefOptions([]); const suggestions = Array.from({ length: 5 }, (_, i) => ({ value: `${value}_ref选项${i + 1}`, })); setRefOptions(suggestions); }; const handleRefFocus = () => { autoCompleteRef.current?.focus(); }; const handleRefBlur = () => { autoCompleteRef.current?.blur(); }; const handleRefClear = () => { autoCompleteRef.current?.clear(); }; // 高级功能处理函数 const handleAdvancedChange = (value: string) => { if (!value) { return setAdvancedOptions([]); } const suggestions = Array.from({ length: 8 }, (_, i) => ({ value: `高级选项${i + 1}`, })); setAdvancedOptions(suggestions); }; return ( {/* 状态演示 */} {/* 基础使用 */} 基础使用 最基本的自动补全功能,支持清除、焦点事件等 { console.log('下拉框状态变化:', isOpen); }} onFocus={() => console.log('获得焦点')} onBlur={() => console.log('失去焦点')} onClear={() => console.log('清空内容')} /> 状态演示 错误状态 禁用状态 {/* 高亮匹配内容 */} 高亮匹配内容 输入内容时会高亮显示匹配的部分(请输入 xt) {/* 弹出位置 */} 弹出位置 默认向下弹出 向上弹出 {/* 受控组件 */} 受控组件 设置值 清空 通过 value 和 onChange 控制组件状态 当前值: {controlledValue || '(空)'} {/* Ref 使用 */} Ref 使用 聚焦 失焦 清空 通过 ref 可以调用组件的方法 {/* 高级功能 */} 高级功能 在 FloatingLayer 中使用(解决 Android 滚动问题) setShowFloatingLayer(false)} onConfirm={() => setShowFloatingLayer(false)} > ); };