🌈 style(eslint): 新增eslint规则
This commit is contained in:
@@ -1,18 +1,19 @@
|
||||
import { Input, View } from '@tarojs/components'
|
||||
import { memo, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import Big from 'big.js'
|
||||
import styles from './index.module.scss'
|
||||
type params = {
|
||||
minNum?: number //最小值
|
||||
maxNum?: number //最大值
|
||||
step?: number //步长
|
||||
defaultNum?: number //默认值
|
||||
digits?: number //多少位小数
|
||||
import styles from './index.module.scss'
|
||||
|
||||
interface params {
|
||||
minNum?: number // 最小值
|
||||
maxNum?: number // 最大值
|
||||
step?: number // 步长
|
||||
defaultNum?: number // 默认值
|
||||
digits?: number // 多少位小数
|
||||
onChange?: (val: number) => void
|
||||
onBlue?: (val: number) => void //失去焦点触发
|
||||
onBlue?: (val: number) => void // 失去焦点触发
|
||||
onClickBtn?: (val: number) => void
|
||||
unit?: string
|
||||
disable?: true | false //是否禁用
|
||||
disable?: true | false // 是否禁用
|
||||
}
|
||||
export default memo((props: params) => {
|
||||
return <Counter {...props}></Counter>
|
||||
@@ -20,24 +21,24 @@ export default memo((props: params) => {
|
||||
|
||||
function areEqual(prevProps: params, nextProps: params) {
|
||||
return (
|
||||
prevProps.defaultNum == nextProps.defaultNum &&
|
||||
prevProps.unit == nextProps.unit &&
|
||||
prevProps.minNum == nextProps.minNum &&
|
||||
prevProps.maxNum == nextProps.maxNum &&
|
||||
prevProps.step == nextProps.step &&
|
||||
prevProps.digits == nextProps.digits
|
||||
prevProps.defaultNum == nextProps.defaultNum
|
||||
&& prevProps.unit == nextProps.unit
|
||||
&& prevProps.minNum == nextProps.minNum
|
||||
&& prevProps.maxNum == nextProps.maxNum
|
||||
&& prevProps.step == nextProps.step
|
||||
&& prevProps.digits == nextProps.digits
|
||||
)
|
||||
}
|
||||
const Counter = memo((props: params) => {
|
||||
let { minNum = 0, maxNum = 10000, step = 1, digits = 0, defaultNum = 0, onChange, onBlue, onClickBtn, unit = '', disable = false } = props
|
||||
const { minNum = 0, maxNum = 10000, step = 1, digits = 0, defaultNum = 0, onChange, onBlue, onClickBtn, unit = '', disable = false } = props
|
||||
const [value, setValue] = useState<any>({ count: defaultNum })
|
||||
// useEffect(() => {
|
||||
// setValue({ count: defaultNum })
|
||||
// }, [defaultNum])
|
||||
console.log('1231231231231212')
|
||||
const onPlus = () => {
|
||||
if (disable) return false
|
||||
let { count } = value
|
||||
if (disable) { return false }
|
||||
const { count } = value
|
||||
let num_res = Big(count).add(step).toNumber()
|
||||
num_res = num_res >= maxNum ? maxNum : num_res
|
||||
num_res = formatDigits(num_res)
|
||||
@@ -46,8 +47,8 @@ const Counter = memo((props: params) => {
|
||||
onClickBtn?.(parseFloat(num_res))
|
||||
}
|
||||
const minus = () => {
|
||||
if (disable) return false
|
||||
let { count } = value
|
||||
if (disable) { return false }
|
||||
const { count } = value
|
||||
let num_res = Big(count).minus(step).toNumber()
|
||||
num_res = num_res < minNum ? minNum : num_res
|
||||
// setValue({ ...value, count: num_res })
|
||||
@@ -55,23 +56,23 @@ const Counter = memo((props: params) => {
|
||||
onClickBtn?.(parseFloat(num_res))
|
||||
}
|
||||
|
||||
//保留小数
|
||||
// 保留小数
|
||||
const formatDigits = (num) => {
|
||||
num = num + ''
|
||||
num = `${num}`
|
||||
if (num.includes('.') && digits > 0) {
|
||||
console.log('num::', num.includes('.'))
|
||||
let res = num.split('.')
|
||||
let last_num = res[1].substr(0, digits)
|
||||
return res[0] + '.' + last_num
|
||||
const res = num.split('.')
|
||||
const last_num = res[1].substr(0, digits)
|
||||
return `${res[0]}.${last_num}`
|
||||
}
|
||||
return parseFloat(num)
|
||||
}
|
||||
|
||||
//检查数据
|
||||
// 检查数据
|
||||
const checkData = (val) => {
|
||||
let num = parseFloat(val)
|
||||
if (num > maxNum) return maxNum
|
||||
if (num < minNum) return minNum
|
||||
const num = parseFloat(val)
|
||||
if (num > maxNum) { return maxNum }
|
||||
if (num < minNum) { return minNum }
|
||||
return val
|
||||
}
|
||||
|
||||
@@ -100,13 +101,14 @@ const Counter = memo((props: params) => {
|
||||
}
|
||||
|
||||
const onBluerEven = (e) => {
|
||||
let num = parseFloat(e.detail.value)
|
||||
const num = parseFloat(e.detail.value)
|
||||
if (!isNaN(num)) {
|
||||
let count = formatDigits(num)
|
||||
count = checkData(count)
|
||||
// setValue({ ...value, count })
|
||||
onBlue?.(count as number)
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
// setValue({ ...value, count: defaultNum })
|
||||
onBlue?.(minNum)
|
||||
}
|
||||
@@ -121,9 +123,9 @@ const Counter = memo((props: params) => {
|
||||
value={String(props.defaultNum)}
|
||||
onInput={onInputEven}
|
||||
onBlur={onBluerEven}
|
||||
type='digit'
|
||||
type="digit"
|
||||
disabled={disable}
|
||||
alwaysEmbed={true}
|
||||
alwaysEmbed
|
||||
cursorSpacing={150}
|
||||
/>
|
||||
<View className={styles.unit}>{unit}</View>
|
||||
|
||||
@@ -1,26 +1,27 @@
|
||||
import { CustomWrapper, Input, View } from '@tarojs/components'
|
||||
import { memo, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import Big from 'big.js'
|
||||
import styles from './index.module.scss'
|
||||
type params = {
|
||||
minNum?: number //最小值
|
||||
maxNum?: number //最大值
|
||||
step?: number //步长
|
||||
defaultNum?: number //默认值
|
||||
digits?: number //多少位小数
|
||||
import styles from './index.module.scss'
|
||||
|
||||
interface params {
|
||||
minNum?: number // 最小值
|
||||
maxNum?: number // 最大值
|
||||
step?: number // 步长
|
||||
defaultNum?: number // 默认值
|
||||
digits?: number // 多少位小数
|
||||
onChange?: (val: number) => void
|
||||
onBlue?: (val: number) => void //失去焦点触发
|
||||
onBlue?: (val: number) => void // 失去焦点触发
|
||||
onClickBtn?: (val: number) => void
|
||||
unit?: string
|
||||
disabled?: true | false //是否禁用
|
||||
returnZero?: true | false //少于最小值时是否归0
|
||||
disabled?: true | false // 是否禁用
|
||||
returnZero?: true | false // 少于最小值时是否归0
|
||||
}
|
||||
export default memo((props: params) => {
|
||||
return <Counter {...props}></Counter>
|
||||
})
|
||||
|
||||
const Counter = memo((props: params) => {
|
||||
let {
|
||||
const {
|
||||
minNum = 0,
|
||||
maxNum = 10000,
|
||||
step = 1,
|
||||
@@ -38,8 +39,8 @@ const Counter = memo((props: params) => {
|
||||
setValue({ count: defaultNum })
|
||||
}, [defaultNum])
|
||||
const onPlus = () => {
|
||||
if (disabled) return false
|
||||
let count = value.count
|
||||
if (disabled) { return false }
|
||||
const count = value.count
|
||||
let num_res = Big(count).add(step).toNumber()
|
||||
num_res = num_res >= maxNum ? maxNum : num_res
|
||||
num_res = formatDigits(num_res)
|
||||
@@ -48,12 +49,13 @@ const Counter = memo((props: params) => {
|
||||
onClickBtn?.(parseFloat(num_res))
|
||||
}
|
||||
const minus = () => {
|
||||
if (disabled) return false
|
||||
let count = value.count
|
||||
if (disabled) { return false }
|
||||
const count = value.count
|
||||
let num_res = Big(count).minus(step).toNumber()
|
||||
if (returnZero) {
|
||||
num_res = num_res < minNum ? 0 : num_res
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
num_res = num_res < minNum ? minNum : num_res
|
||||
}
|
||||
setValue({ ...value, count: num_res })
|
||||
@@ -61,15 +63,16 @@ const Counter = memo((props: params) => {
|
||||
onClickBtn?.(parseFloat(num_res))
|
||||
}
|
||||
|
||||
//保留小数
|
||||
// 保留小数
|
||||
const formatDigits = (num) => {
|
||||
num = num + ''
|
||||
num = `${num}`
|
||||
if (num.includes('.')) {
|
||||
let res = num.split('.')
|
||||
const res = num.split('.')
|
||||
if (digits > 0) {
|
||||
let last_num = res[1].substr(0, digits)
|
||||
return res[0] + '.' + last_num
|
||||
} else {
|
||||
const last_num = res[1].substr(0, digits)
|
||||
return `${res[0]}.${last_num}`
|
||||
}
|
||||
else {
|
||||
return res[0]
|
||||
}
|
||||
}
|
||||
@@ -77,56 +80,61 @@ const Counter = memo((props: params) => {
|
||||
return parseFloat(num)
|
||||
}
|
||||
|
||||
//检查数据
|
||||
// 检查数据
|
||||
const checkData = (val) => {
|
||||
let num = parseFloat(val)
|
||||
if (num > maxNum) return maxNum
|
||||
if (num < minNum) return minNum
|
||||
const num = parseFloat(val)
|
||||
if (num > maxNum) { return maxNum }
|
||||
if (num < minNum) { return minNum }
|
||||
return val
|
||||
}
|
||||
|
||||
const onInputEven = (e) => {
|
||||
let res = e.detail.value
|
||||
const res = e.detail.value
|
||||
if (res === '') {
|
||||
onChange?.(minNum)
|
||||
} else if (!isNaN(Number(res))) {
|
||||
}
|
||||
else if (!isNaN(Number(res))) {
|
||||
let count = formatDigits(res)
|
||||
count = checkData(count)
|
||||
onChange?.(parseFloat(count as string))
|
||||
} else {
|
||||
let num = parseFloat(res)
|
||||
}
|
||||
else {
|
||||
const num = parseFloat(res)
|
||||
if (!isNaN(num)) {
|
||||
let count = formatDigits(num)
|
||||
count = checkData(count)
|
||||
onChange?.(count as number)
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
onChange?.(defaultNum)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const onBluerEven = (e) => {
|
||||
let num = parseFloat(e.detail.value)
|
||||
const num = parseFloat(e.detail.value)
|
||||
if (e.detail.value == '') {
|
||||
onBlue?.(minNum)
|
||||
setValue({ count: minNum })
|
||||
} else if (!isNaN(num)) {
|
||||
}
|
||||
else if (!isNaN(num)) {
|
||||
let count = formatDigits(num)
|
||||
count = checkData(count)
|
||||
setValue({ count })
|
||||
onBlue?.(count as number)
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
setValue({ count: minNum })
|
||||
onBlue?.(minNum)
|
||||
}
|
||||
}
|
||||
return (
|
||||
<View className={styles.main} onClick={(e) => e.stopPropagation()}>
|
||||
<View className={styles.main} onClick={e => e.stopPropagation()}>
|
||||
<View className={styles.reduce} onClick={() => minus()}>
|
||||
-
|
||||
</View>
|
||||
<View className={styles.input}>
|
||||
<Input type='digit' value={value.count} onInput={onInputEven} onBlur={onBluerEven} disabled={disabled} alwaysEmbed={true} cursorSpacing={150} />
|
||||
<Input type="digit" value={value.count} onInput={onInputEven} onBlur={onBluerEven} disabled={disabled} alwaysEmbed cursorSpacing={150} />
|
||||
<View className={styles.unit}>{unit}</View>
|
||||
</View>
|
||||
<View className={styles.plus} onClick={() => onPlus()}>
|
||||
|
||||
Reference in New Issue
Block a user