import React from 'react'; import { View, StyleSheet, Text } from 'react-native'; import Form from '../index'; import Button from '../../Button'; import { ScrollView } from 'react-native'; import BottomSafeArea from '../../BottomSafeArea'; import { Fill, Toast } from '@xrnjs/ui'; import Card from '_global/Card'; import AmountInput from '../../AmountInput'; import { Values } from '../../AmountInput/interface'; type FormData = { transferAmount: Values; depositAmount: Values; withdrawAmount: Values; tradeAmount: Values; }; const AmountInputExamplesDemo: React.FC = () => { const form = Form.useForm({ defaultValues: { transferAmount: { amount: '', currency: 'USD' }, depositAmount: { amount: '', currency: 'CNY' }, withdrawAmount: { amount: '', currency: 'EUR' }, tradeAmount: { amount: '', currency: 'USD' }, }, }); const [transferAmountFixed, setTransferAmountFixed] = React.useState({ amount: '123.45', currency: 'USD', }); const onSubmit = (data: FormData) => { console.log('Form submitted:', data); Toast( `提交成功!\n转账: ${data.transferAmount.amount} ${data.transferAmount.currency}\n存款: ${data.depositAmount.amount} ${data.depositAmount.currency}` ); }; const onError = (errors: Record) => { console.log('Form errors:', errors); }; return ( {/* Form.AmountInput 快捷用法 */} { if (!value.amount || parseFloat(value.amount) <= 0) { return '转账金额必须大于0'; } if (parseFloat(value.amount) > 10000) { return '转账金额不能超过可用余额'; } return true; }, }} /> {/* Form.Item + AmountInput 组合用法 */} { if (!value.amount) { return '请输入存款金额'; } if (parseFloat(value.amount) < 100) { return '最小存款金额为100'; } return true; }, }} > {/* 高级配置示例 */} { if (!value.amount || parseFloat(value.amount) <= 0) { return '提现金额必须大于0'; } // 不同货币的最小提现限制 const minAmounts = { EUR: 10, GBP: 10, JPY: 1000, } as const; const minAmount = minAmounts[value.currency as keyof typeof minAmounts] || 10; if (parseFloat(value.amount) < minAmount) { return `${value.currency} 最小提现金额为 ${minAmount}`; } return true; }, }} /> { if (!value.amount || parseFloat(value.amount) <= 0) { return '交易金额必须大于0'; } if (parseFloat(value.amount) < 0.001) { return 'BTC 最小交易金额为 0.001'; } if (parseFloat(value.amount) > 10) { return 'BTC 最大交易金额为 10'; } return true; }, }} /> 当前值:{transferAmountFixed.amount}{' '} {transferAmountFixed.currency} setTransferAmountFixed(v)} /> ); }; const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#f5f5f5', }, scrollContainer: { flex: 1, padding: 20, paddingBottom: 0, }, cardStyle: { marginBottom: 16, }, fixedButtonContainer: { backgroundColor: '#fff', paddingHorizontal: 20, paddingTop: 16, paddingBottom: 30, borderTopWidth: 1, borderTopColor: '#e5e5e5', flexDirection: 'row', justifyContent: 'center', shadowColor: '#000', shadowOffset: { width: 0, height: -2, }, shadowOpacity: 0.1, shadowRadius: 4, elevation: 8, }, buttonSpacer: { width: 20, }, }); export default AmountInputExamplesDemo;