面料详情
This commit is contained in:
parent
4fa9223f6f
commit
7f55f90241
36140
package-lock.json
generated
Normal file
36140
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
21
package.json
21
package.json
@ -37,27 +37,28 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.7.7",
|
"@babel/runtime": "^7.7.7",
|
||||||
"@tarojs/components": "3.3.10",
|
"@tarojs/components": "3.3.10",
|
||||||
|
"@tarojs/react": "3.3.10",
|
||||||
"@tarojs/runtime": "3.3.10",
|
"@tarojs/runtime": "3.3.10",
|
||||||
"@tarojs/taro": "3.3.10",
|
"@tarojs/taro": "3.3.10",
|
||||||
"@tarojs/react": "3.3.10",
|
"mathjs": "^10.4.3",
|
||||||
"react-dom": "^17.0.0",
|
"react": "^17.0.0",
|
||||||
"react": "^17.0.0"
|
"react-dom": "^17.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/webpack-env": "^1.13.6",
|
|
||||||
"@types/react": "^17.0.2",
|
|
||||||
"@tarojs/mini-runner": "3.3.10",
|
|
||||||
"@babel/core": "^7.8.0",
|
"@babel/core": "^7.8.0",
|
||||||
|
"@tarojs/mini-runner": "3.3.10",
|
||||||
"@tarojs/webpack-runner": "3.3.10",
|
"@tarojs/webpack-runner": "3.3.10",
|
||||||
|
"@types/react": "^17.0.2",
|
||||||
|
"@types/webpack-env": "^1.13.6",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^4.15.1",
|
||||||
|
"@typescript-eslint/parser": "^4.15.1",
|
||||||
"babel-preset-taro": "3.3.10",
|
"babel-preset-taro": "3.3.10",
|
||||||
"eslint-config-taro": "3.3.10",
|
|
||||||
"eslint": "^6.8.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-plugin-react": "^7.8.2",
|
"eslint-config-taro": "3.3.10",
|
||||||
"eslint-plugin-import": "^2.12.0",
|
"eslint-plugin-import": "^2.12.0",
|
||||||
|
"eslint-plugin-react": "^7.8.2",
|
||||||
"eslint-plugin-react-hooks": "^4.2.0",
|
"eslint-plugin-react-hooks": "^4.2.0",
|
||||||
"stylelint": "9.3.0",
|
"stylelint": "9.3.0",
|
||||||
"@typescript-eslint/parser": "^4.15.1",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^4.15.1",
|
|
||||||
"typescript": "^4.1.0"
|
"typescript": "^4.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +1,70 @@
|
|||||||
import { Input, View } from "@tarojs/components"
|
import { Input, View } from "@tarojs/components"
|
||||||
import { useRef, useState } from "react"
|
import { useEffect, useMemo, useRef, useState } from "react"
|
||||||
|
import {bignumber as mBignumber, add as mAdd, number as mNumber, subtract} from 'mathjs'
|
||||||
import styles from "./index.module.scss"
|
import styles from "./index.module.scss"
|
||||||
type params = {
|
type params = {
|
||||||
minNum?: number,
|
minNum?: number,
|
||||||
maxNum?: number,
|
maxNum?: number,
|
||||||
step?: number
|
step?: number,
|
||||||
|
defaultNum?: number,
|
||||||
|
digits?: number //多少位小数
|
||||||
}
|
}
|
||||||
export default ({minNum = 0, maxNum = 100, step=0.1}: params) => {
|
export default ({minNum = 0, maxNum = 100, step=0.1, digits = 1, defaultNum = 3}: params) => {
|
||||||
const [count, setCount] = useState(0)
|
// const [count, setCount] = useState<number | string>(0)
|
||||||
|
const [value, setValue] = useState<any>({count:defaultNum})
|
||||||
const onPlus = () => {
|
const onPlus = () => {
|
||||||
let num = count + step
|
let {count} = value
|
||||||
num = num >= maxNum?maxNum:num
|
let count_res = mBignumber(count)
|
||||||
setCount(num)
|
let step_res = mBignumber(step)
|
||||||
|
let num = mAdd(count_res, step_res)
|
||||||
|
let num_res = mNumber(num) as number
|
||||||
|
num_res = num_res >= maxNum?maxNum:num_res
|
||||||
|
num_res = formatDigits(num_res)
|
||||||
|
setValue({...value, count:num_res})
|
||||||
}
|
}
|
||||||
const minus = () => {
|
const minus = () => {
|
||||||
let num = count - step
|
let {count} = value
|
||||||
num = num <= minNum?minNum:num
|
let count_res = mBignumber(count)
|
||||||
setCount(num)
|
let step_res = mBignumber(step)
|
||||||
|
let num = subtract(count_res, step_res)
|
||||||
|
let num_res = mNumber(num) as number
|
||||||
|
num_res = num_res <= minNum?minNum:num_res
|
||||||
|
setValue({...value, count:num_res})
|
||||||
|
}
|
||||||
|
|
||||||
|
//保留小数
|
||||||
|
const formatDigits = (num) => {
|
||||||
|
num = num + ''
|
||||||
|
if(num.includes('.')) {
|
||||||
|
let res = num.split('.')
|
||||||
|
let last_num = res[1].substr(0, digits)
|
||||||
|
return res[0] + '.' + last_num
|
||||||
|
}
|
||||||
|
return num
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const onInputEven = (e) => {
|
||||||
|
let res = e.detail.value
|
||||||
|
if(res != ''&&!isNaN(Number(res))) {
|
||||||
|
setValue({...value, count:formatDigits(res)})
|
||||||
|
} else {
|
||||||
|
let num = parseFloat(res)
|
||||||
|
if(!isNaN(num)) {
|
||||||
|
setValue({...value, count:formatDigits(num)})
|
||||||
|
} else {
|
||||||
|
setValue({...value, count:defaultNum})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<View className={styles.main}>
|
<View className={styles.main}>
|
||||||
<View className={styles.reduce} onClick={() => minus()}>-</View>
|
<View className={styles.reduce} onClick={() => minus()}>-</View>
|
||||||
<View className={styles.input}>
|
<View className={styles.input}>
|
||||||
<Input
|
<Input
|
||||||
value={String(count)}
|
value={String(value.count)}
|
||||||
onInput={() => {}}
|
onInput={onInputEven}
|
||||||
onBlur={() => {}}
|
onBlur={() => {}}
|
||||||
/>
|
/>
|
||||||
<View className={styles.unit}>米</View>
|
<View className={styles.unit}>米</View>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user