【发布时间】:2021-11-06 17:04:08
【问题描述】:
React:我怎样才能让这个 React 组件写得更好更高效?我觉得我在重复 onIncrement 中的代码,并且可以更好地重构它。 maxValue 属性是可选的
ButtonStepper.tsx:
// TypeScript Type: Props
interface IProps {
onChange: (value: number) => void;
minValue?: number;
maxValue?: number;
stepValue?: number;
}
// Component: Button (Stepper)
const ButtonStepper = ({ onChange, minValue, maxValue, stepValue }: IProps): JSX.Element => {
// React Hooks: State
const [value, setValue] = useState<number>(0);
// React Hooks: Lifecycle Methods
useEffect(() => {
onChange(value);
}, [onChange, value]);
// On Increment
const onIncrement = (): void => {
if (maxValue && maxValue <= value) {
if (stepValue) {
setValue((prevState) => prevState + stepValue);
}
else {
setValue((prevState) => prevState + 1);
}
}
else {
if (stepValue) {
setValue((prevState) => prevState + stepValue);
}
else {
setValue((prevState) => prevState + 1);
}
}
};
【问题讨论】:
-
好吧,如果我没记错的话,你的外部
if... else...块正在做同样的事情。有条件maxValue && maxValue <= value有什么意义? -
以想要“更好”或“更高效”开头的问题往往会得到固执己见的回应,因此被认为是偏离主题的 SO。如果这段代码正在运行并且可以工作,那么它可能更适合codereview。如果有实际问题,请澄清并提出更具体的问题。
标签: reactjs typescript react-native components