【发布时间】:2025-12-01 11:55:01
【问题描述】:
我有一个输入类型的范围,输入 1 和输入 2 有 2 个状态值。我想让左输入不可移动并且在它碰到右输入时不通过。我如何使用状态值来实现它? 我尝试过类似的方法,但没有成功
import React, { Component } from 'react'
class SearchForm extends Component {
constructor(props) {
super(props)
this.state = {
rateMinValue: 0,
rateMaxValue: 300000,
minGap: 0,
}
}
rateMinHandler = (event) => {
this.setState(
{
rateMinValue: event.target.value
}
)
}
rateMaxHandler = (event) => {
this.setState(
{
rateMaxValue: event.target.value
}
)
}
slideOne = (event) => {
if (this.state.rateMaxValue - this.state.rateMinValue <= this.state.minGap) {
this.setState({
rateMinValue: this.state.rateMaxValue
- this.state.minGap
})
}
}
slideTwo = (event) => {
if (this.state.rateMaxValue - this.state.rateMinValue <= this.state.minGap) {
this.setState({
rateMaxValue: this.state.rateMinValue
+ this.state.minGap
})
}
}
render() {
return (
<div>
<div className='filter-rate-slider'>
<div className='rate-range-values'>
{this.state.rateMinValue < this.state.rateMaxValue ? <span>{this.state.rateMinValue}-{this.state.rateMaxValue}</span> : <span>{this.state.rateMaxValue}-{this.state.rateMinValue}</span>}
</div>
<div className='rate-range-container'>
<div className='slider-track'></div>
<input onInput={this.slideOne} type='range' min='0' max='300000' step='10000' defaultValue='0' id='slider-1' onChange={this.rateMinHandler}></input>
<input onInput={this.slideTwo} type='range' min='0' max='300000' step='10000' defaultValue='300000' id='slider-2' onChange={this.rateMaxHandler}></input>
</div>
</div>
</div>
)
}
}
export default SearchForm
我不知道哪里出了问题,有人帮帮我。
【问题讨论】:
-
slideOne和slideTwo在哪里调用? -
在每个输入标签
<input onInput={this.slideOne}> -
您的 HTML 代码没有
onInput。 -
我在删除 onInput 事件 bcs 后复制了我的 html 标签,因为它太落后了
-
请更新您的问题,包括minimal, complete, and reproducible code example,说明您尝试过的内容,并提供有关未按预期工作的详细信息。
标签: javascript html reactjs state