🐞 fix(ID1000785): 底部导航栏【购物】点击没有做刷新
【底部导航栏【购物】点击没有做刷新】 https://www.tapd.cn/53459131/bugtrace/bugs/view/1153459131001000785
This commit is contained in:
@@ -2,6 +2,7 @@ import { Input, View } from "@tarojs/components"
|
||||
import { useEffect, useMemo, useRef, useState } from "react"
|
||||
import Big from 'big.js'
|
||||
import styles from "./index.module.scss"
|
||||
import { usePropsValue } from "@/use/useCommon"
|
||||
type params = {
|
||||
minNum?: number, //最小值
|
||||
maxNum?: number, //最大值
|
||||
@@ -14,28 +15,31 @@ type params = {
|
||||
unit?: string,
|
||||
disable?: boolean, //是否禁用
|
||||
}
|
||||
export default ({minNum = 0, maxNum = 10000, step=1, digits = 0, defaultNum = 0, onChange, onBlue, onClickBtn, unit = '', disable = false}: params) => {
|
||||
const [value, setValue] = useState<any>({count:defaultNum})
|
||||
|
||||
export default ({minNum = 0, maxNum = 10000, step=1, digits = 0, defaultNum = 0, onChange: onValueChange, onBlue, onClickBtn, unit = '', disable = false}: params) => {
|
||||
const [value, setValue] = usePropsValue<number>({
|
||||
value: defaultNum,
|
||||
defaultValue: defaultNum,
|
||||
onChange: (nextValue) => {
|
||||
onValueChange && onValueChange(nextValue)
|
||||
}
|
||||
})
|
||||
// 加号
|
||||
const onPlus = (event) => {
|
||||
event.stopPropagation()
|
||||
if (disable) return false
|
||||
let { count } = value
|
||||
let num_res = Big(count).add(step).toNumber()
|
||||
let num_res = Big(value).add(step).toNumber()
|
||||
num_res = num_res >= maxNum ? maxNum : num_res
|
||||
num_res = formatDigits(num_res)
|
||||
setValue({ ...value, count: num_res })
|
||||
onChange?.(parseFloat(num_res))
|
||||
setValue(num_res)
|
||||
onClickBtn?.(parseFloat(num_res))
|
||||
}
|
||||
// 减号
|
||||
const minus = (event) => {
|
||||
event.stopPropagation()
|
||||
if(disable) return false
|
||||
let {count} = value
|
||||
let num_res = Big(count).minus(step).toNumber()
|
||||
let num_res = Big(value).minus(step).toNumber()
|
||||
num_res = num_res < minNum ? minNum : num_res
|
||||
setValue({...value, count:num_res})
|
||||
onChange?.(parseFloat(num_res))
|
||||
setValue(num_res)
|
||||
onClickBtn?.(parseFloat(num_res))
|
||||
}
|
||||
|
||||
@@ -63,27 +67,23 @@ export default ({minNum = 0, maxNum = 10000, step=1, digits = 0, defaultNum = 0,
|
||||
const onInputEven = (e) => {
|
||||
let res = e.detail.value
|
||||
if(res === '') {
|
||||
setValue({...value, count:minNum})
|
||||
onChange?.(minNum)
|
||||
setValue(minNum)
|
||||
return minNum
|
||||
}
|
||||
else if(!isNaN(Number(res))) {
|
||||
let count = formatDigits(res)
|
||||
count = checkData(count)
|
||||
setValue({...value, count})
|
||||
onChange?.(parseFloat(count as string))
|
||||
setValue(count as number)
|
||||
return count
|
||||
} else {
|
||||
let num = parseFloat(res)
|
||||
if (!isNaN(num)) {
|
||||
let count = formatDigits(num)
|
||||
count = checkData(count)
|
||||
setValue({ ...value, count })
|
||||
onChange?.(count as number)
|
||||
setValue(count as number)
|
||||
return count
|
||||
} else {
|
||||
setValue({ ...value, count: defaultNum })
|
||||
onChange?.(defaultNum)
|
||||
setValue(defaultNum)
|
||||
return defaultNum
|
||||
}
|
||||
|
||||
@@ -91,17 +91,17 @@ export default ({minNum = 0, maxNum = 10000, step=1, digits = 0, defaultNum = 0,
|
||||
}
|
||||
|
||||
const onBluerEven = () => {
|
||||
let num = parseFloat(value.count)
|
||||
let num = parseFloat(String(value))
|
||||
console.log('onInputEven res===>', num)
|
||||
|
||||
if (!isNaN(num)) {
|
||||
let count = formatDigits(num)
|
||||
count = checkData(count)
|
||||
setValue({ ...value, count })
|
||||
setValue(count as number)
|
||||
onBlue?.(count as number)
|
||||
return count
|
||||
} else {
|
||||
setValue({ ...value, count: defaultNum })
|
||||
setValue(defaultNum)
|
||||
onBlue?.(defaultNum)
|
||||
return defaultNum
|
||||
}
|
||||
@@ -116,7 +116,7 @@ export default ({minNum = 0, maxNum = 10000, step=1, digits = 0, defaultNum = 0,
|
||||
-
|
||||
</View>
|
||||
<View className={styles.input} onClick={noop}>
|
||||
<Input value={String(value.count)} onInput={onInputEven} onBlur={onBluerEven} type='digit' disabled={disable} />
|
||||
<Input value={String(value)} onInput={onInputEven} onBlur={onBluerEven} type='digit' disabled={disable} />
|
||||
<View className={styles.unit}>{unit}</View>
|
||||
</View>
|
||||
<View className={styles.plus} onClick={onPlus}>
|
||||
|
||||
Reference in New Issue
Block a user