🐞 fix(ID1000785): 底部导航栏【购物】点击没有做刷新

【底部导航栏【购物】点击没有做刷新】 https://www.tapd.cn/53459131/bugtrace/bugs/view/1153459131001000785
This commit is contained in:
xuan
2022-11-21 17:52:58 +08:00
parent 3848d26501
commit 793ed3fdad
5 changed files with 59 additions and 46 deletions
+23 -23
View File
@@ -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}>