三目表达式处理 value 的值,value 在 最大值 max 和 最小值 min 之间,就使用value本身,否则大于max使用max,小于min使用min;
将最后的 value 传递出去。
代码语言:javascript复制
getValue(e){
let { value } = e.detail
let { max = 1000, min = 1 } = this.props
value = value.replace(/[^d]/g, '')
value = value < min ? min : value > max ? max : value
this.props.changeValue(value)
}
5. 【Stepper 进步器】点击加减号触发处理
获取传入的 max 和 min 的值,如果没有,默认 1000 和 1;
判断点击的是加号还是减号;
加号,判断加1是否小于等于最大值,满足就加1;
减号,判断减1是否大于最小值,满足减1;
注意此处进步器的步长都是1;
最后使用value本身;
将最后的 value 传递出去。
代码语言:javascript复制
handleStep(value, type){
let { max = 1000, min = 1 } = this.props
value = type == ' ' && value 1 <= max ? value 1 : type == '-' && value - 1 > min ? value - 1 : value
this.props.changeValue(value)
}
import React, { Component } from 'react'
import { View, Text, Input } from '@tarojs/components'
import './index.scss'
export default class RuiStepper extends Component {
constructor(props) {
super(props)
}
// 操作对值的加减操作
handleStep(value, type){
let { max = 1000, min = 1 } = this.props
value = type == ' ' && value 1 <= max ? value 1 : type == '-' && value - 1 > min ? value - 1 : value
this.props.changeValue(value)
}
// 获取输入值的操作
getValue(e){
let { value } = e.detail
let { max = 1000, min = 1 } = this.props
value = value.replace(/[^d]/g, '')
value = value < min ? min : value > max ? max : value
this.props.changeValue(value)
}
render () {
let { value } = this.props
return (
<View className='rui-flex-ac rui-fa' onClick={(e) => e.stopPropagation()}>
<Text className='rui-icon rui-icon-minus rui-color4 rui-fs30 rui-ml15' onClick={this.handleStep.bind(this, value, '-')}></Text>
<Input className='rui-stepper-input' value={value} onBlur={this.getValue.bind(this)}></Input>
<Text className='rui-icon rui-icon-plus rui-color4 rui-fs30 rui-mr15' onClick={this.handleStep.bind(this, value, ' ')}></Text>
</View>
)
}
}
8. 组件使用
引入【Stepper 步进器】组件;
界面使用;
代码语言:javascript复制
import React, { Component } from 'react'
import { View, Text, Input } from '@tarojs/components'
import RuiStepper from '../RuiStepper/RuiStepper'
export default class RuiGoodsLi extends Component {
constructor(props) {
super(props)
}
changeValue(value){
let { index = 0, idx = 0, list } = this.state
list[index].buy[idx].GoodsNum = value
this.setState({list})
}
render () {
let { value = 1 } = this.props
return (
<View>
<RuiStepper changeValue={this.changeValue.bind(this)} value={goods.GoodsNum}/>
</View>
)
}
}