✨ feat(购物车): 使用context解决跨层级问题

This commit is contained in:
xuan
2022-09-23 15:46:56 +08:00
parent 553445f111
commit b9a0b64826
8 changed files with 225 additions and 146 deletions
+12 -10
View File
@@ -12,22 +12,24 @@ type params = {
onBlue?:(val:number) => void, //失去焦点触发
onClickBtn?:(val:number) => void,
unit?: string,
disable?: true|false, //是否禁用
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})
const onPlus = () => {
if(disable) return false
let {count} = value
const onPlus = (event) => {
event.stopPropagation()
if (disable) return false
let { count } = value
let num_res = Big(count).add(step).toNumber()
num_res = num_res >= maxNum?maxNum:num_res
num_res = num_res >= maxNum ? maxNum : num_res
num_res = formatDigits(num_res)
setValue({...value, count:num_res})
setValue({ ...value, count: num_res })
onChange?.(parseFloat(num_res))
onClickBtn?.(parseFloat(num_res))
}
const minus = () => {
const minus = (event) => {
event.stopPropagation()
if(disable) return false
let {count} = value
let num_res = Big(count).minus(step).toNumber()
@@ -98,7 +100,7 @@ export default ({minNum = 0, maxNum = 10000, step=1, digits = 0, defaultNum = 0,
}
return (
<View className={styles.main}>
<View className={styles.reduce} onClick={() => minus()}>-</View>
<View className={styles.reduce} onClick={minus}>-</View>
<View className={styles.input}>
<Input
value={String(value.count)}
@@ -109,7 +111,7 @@ export default ({minNum = 0, maxNum = 10000, step=1, digits = 0, defaultNum = 0,
/>
<View className={styles.unit}>{unit}</View>
</View>
<View className={styles.plus} onClick={() => onPlus()}>+</View>
<View className={styles.plus} onClick={onPlus}>+</View>
</View>
)
}
}