import React from 'react'; import { CalcButton } from './CalcButton'; import { useCalculator2Store } from '../state'; import { useCalculator2Gestures } from '../hooks/useCalculator2Gestures'; import { colors } from '../res/colors'; import { strings } from '../res/strings'; /** * 数字键盘 — 3列4行 grid * 翻译自 AOSP pad_numeric.xml * * 7 8 9 * 4 5 6 * 1 2 3 * . 0 = */ interface NumericPadProps { style?: React.CSSProperties; } export const NumericPad: React.FC = ({ style }) => { const inputDigit = useCalculator2Store(s => s.inputDigit); const inputDecimal = useCalculator2Store(s => s.inputDecimal); const onEvaluate = useCalculator2Store(s => s.onEvaluate); const { bindAction } = useCalculator2Gestures(); const digits = [ ['7', '8', '9'], ['4', '5', '6'], ['1', '2', '3'], ]; return (
{digits.flat().map(d => ( inputDigit(d)} {...bindAction(`digit.${d}`)} /> ))} {/* 底行: . 0 = */} inputDigit('0')} {...bindAction('digit.0')} />
); };