Reactjs react函数中的If语句

Reactjs react函数中的If语句,reactjs,if-statement,Reactjs,If Statement,我有两个最小和最大数字范围的输入,我尝试使用if语句,所以如果用户输入的最小输入值高于最大输入值,它将重置输入为等于最大值。为什么它在函数minRangeInputChange中不起作用 类生成器扩展React.Component{ 建造师(道具){ 超级(道具) this.state={ onView:“0”, 米努姆:0, 最大数量:100 } } b单击=()=>{ const{minNum,maxNum}=this.state; const min=Math.ceil(minNum);

我有两个最小和最大数字范围的输入,我尝试使用if语句,所以如果用户输入的最小输入值高于最大输入值,它将重置输入为等于最大值。为什么它在函数minRangeInputChange中不起作用

类生成器扩展React.Component{
建造师(道具){
超级(道具)
this.state={
onView:“0”,
米努姆:0,
最大数量:100
} 
}
b单击=()=>{
const{minNum,maxNum}=this.state;
const min=Math.ceil(minNum);
const max=数学楼层(maxNum);
常数x=数学地板(数学随机()*(max-min+1))+min;
返回此.setState({onView:x});
}
minRangeInputChange=(事件)=>{
const{minNum,maxNum}=this.state;
如果(最小值>最大值){
返回此.setState({minNum:maxNum});
}否则{
返回此.setState({minNum:event.target.value});
console.log(minNum);
}
}
maxRangeInputChange=(事件)=>{
const{maxNum}=this.state;
this.setState({maxNum:event.target.value});
}
render(){
返回(
);
}
}
导出默认生成器;
范围组件:

类范围扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
返回(
最低限度
最大限度
);
}
}
导出默认范围;

在函数minRangeInputChange中,您正在检查
minNum
maxNum
,因此如果
0>100,则将minNum设置为100
。您希望比较用户值和最大值,因此如果
XX>max(比如50),则将minNum设置为max

您应该尝试以下值:

minRangeInputChange=(事件)=>{
const{minNum,maxNum}=this.state;
如果(event.target.value>maxNum){
返回此.setState({minNum:maxNum});
}否则{
返回此.setState({minNum:event.target.value});
}
}

什么具体不起作用?此外,返回后的console.log是无法访问的代码。When仍然可以在minimun输入中输入更高的数字。这里一个明显的问题是,您的操作顺序错误。在使用新值更新状态之前,您正在比较状态中的数字。请重新考虑你的方法,因为它在逻辑上不合理。谢谢!我尝试了它,但我的最小输入仍然可以指定比最大输入更高的值。在生成器组件中,状态设置是否正确(只有滑块/范围组件显示错误的值),或者它们是否也错误?状态设置是否正确。如果我使用console.log(maxNum);例如,在maxRangeInputChange函数中,它将使用新的输入更新状态,并将最后一个状态值打印到控制台(我也没有弄明白这一点)。尝试在
范围内更改您的道具:
值={this.props.min}
而不是
值={this.props.minNum}
:从
生成器
,您正在发送
min={this.state.minNum}
,而不是
minNum={this.state.minNum}
-可能不是答案,但您需要更改它!工作!谢谢现在我们只剩下原始问题没有解决:)