image.png
Hooks组件用 memo,或 forwardRef等高阶组件包裹后,类型就会变成 Object类型
只有 export default 导出的 Hooks,才是函数类型
在封装高阶组件时,一定要注意传入组件的类型

  1. import React, { useState, memo } from 'react';
  2. import { array, func } from 'prop-types';
  3. import { InputNumber, Button } from 'antd';
  4. import { SwapRightOutlined } from '@ant-design/icons';
  5. const style = { marginLeft: -1, marginRight: -1 }
  6. RangeNumber.propTypes = {
  7. value: array,
  8. onChange: func,
  9. }
  10. RangeNumber.defaultProps = {
  11. value: [],
  12. }
  13. function RangeNumber({value, onChange}) {
  14. const [state, setState] = useState(value);
  15. function handleChange(val, index) {
  16. const _state = [...state];
  17. _state[index] = val;
  18. setState(_state);
  19. onChange(_state);
  20. }
  21. return (
  22. <div className='flex'>
  23. <InputNumber
  24. min={1}
  25. onChange={val => handleChange(val, 0)}
  26. placeholder='开始时间'
  27. key='start'
  28. />
  29. <Button icon={<SwapRightOutlined />} style={style} />
  30. <InputNumber
  31. min={1}
  32. onChange={val => handleChange(val, 1)}
  33. placeholder='结束时间'
  34. key='end'
  35. />
  36. </div>
  37. )
  38. }
  39. export default memo(RangeNumber);

InputNumber整数

  1. // 先设置最小值为0,再设置小数位数为0
  2. <InputNumber min={0} precision={0} />