import React, { useState, useEffect, useMemo } from "react"; import { View, Text, Image } from "@tarojs/components"; import { Range } from "@nutui/nutui-react-taro"; import styles from "./index.module.scss"; import TitleComponent from "../Title"; import img from "../../config/images"; interface RangeProps { min?: number; max?: number; step?: number; value?: [number, number]; onChange?: (name: string, value: [number, number]) => void; disabled?: boolean; className?: string; name: string; showTitle?: boolean; } const NtrpRange: React.FC = ({ min = 1.0, max = 5.0, step = 0.5, value = [min, max], onChange, disabled = false, className, name, showTitle = true, }) => { const [currentValue, setCurrentValue] = useState<[number, number]>(value); useEffect(() => { value && setCurrentValue(value); }, [JSON.stringify(value || [])]); const handleChange = (val: [number, number]) => { setCurrentValue(val); onChange?.(name, val); }; const marks = useMemo(() => { let marksMap = {}; for (let i = min + step; i < max; i += step) { marksMap[i] = ""; } return marksMap; }, [min, max, step]); const rangContent = useMemo(() => { const [start, end] = currentValue || []; if (Number(start) === Number(min) && Number(end) === Number(max)) { return "不限"; } return `${start.toFixed(1)} - ${end.toFixed(1)}之间`; }, [JSON.stringify(currentValue || []), min, max]); return (
{showTitle && (
} />

{rangContent}

)}
{min.toFixed(1)} {max.toFixed(1)}
); }; export default NtrpRange;