ReactJs bug更新对象中的数组索引
我想根据用户在输入字段“最小值”或“最大值”中的更改来更改索引 我有这个州的ReactJs bug更新对象中的数组索引,reactjs,setstate,Reactjs,Setstate,我想根据用户在输入字段“最小值”或“最大值”中的更改来更改索引 我有这个州的 sensitiveValues: { TOTAL_ASSETS: [0, 1416758841] } 这是我的输入字段 <NumberFormat className="grey-form input-padding" defaultValue={parseFloat(max_value).toFixed(0)} thousandSeparator={tru
sensitiveValues: {
TOTAL_ASSETS: [0, 1416758841]
}
这是我的输入字段
<NumberFormat
className="grey-form input-padding"
defaultValue={parseFloat(max_value).toFixed(0)}
thousandSeparator={true}
value={this.state.sensitiveValues[name] ? parseFloat(this.state.sensitiveValues[name][1]) : 0}
onChange={this.amountInputChangeHandler}
id={`${name}-max_value`}/>
但是,每当我尝试更改字段中的值时,它都会更改
amountInputChangeHandler
中的最小值和最大值,这取决于类型是max\u值还是min\u值,您需要更新索引0或1处的值。还可以使用setState回调来执行此类更新
请注意返回值的顺序[key]:[value,prev.sensitiveValues[key]]
和[key]:[prev.sensitiveValues[key],value]
amountInputChangeHandler=(e)=>{
let[key,type]=e.target.id.split('-'))
const value=parseFloat(例如,target.value.replace(/,/g,,))
//密钥===总资产
//类型===最小值或最大值
//我们为任何键更新数组中的第一个值
如果(类型=='min_值'){
console.log('它转到最小值')
this.setState(prev=>({
敏感值:{
…以前的敏感值,
[键]:[值,上一个敏感值[键][1]]
}
}))
}
//我们为任何键更新数组中的第二个值
如果(类型=='max_value'){
console.log('转到最大值')
this.setState(prev=>({
敏感值:{
…以前的敏感值,
[key]:[prev.sensitiveValues[key][0],value]
}
}))
}
}
在amountInputChangeHandler
中,根据类型为max\u值或min\u值,您需要更新索引0或1处的值。还可以使用setState回调来执行此类更新
请注意返回值的顺序[key]:[value,prev.sensitiveValues[key]]
和[key]:[prev.sensitiveValues[key],value]
amountInputChangeHandler=(e)=>{
let[key,type]=e.target.id.split('-'))
const value=parseFloat(例如,target.value.replace(/,/g,,))
//密钥===总资产
//类型===最小值或最大值
//我们为任何键更新数组中的第一个值
如果(类型=='min_值'){
console.log('它转到最小值')
this.setState(prev=>({
敏感值:{
…以前的敏感值,
[键]:[值,上一个敏感值[键][1]]
}
}))
}
//我们为任何键更新数组中的第二个值
如果(类型=='max_value'){
console.log('转到最大值')
this.setState(prev=>({
敏感值:{
…以前的敏感值,
[key]:[prev.sensitiveValues[key][0],value]
}
}))
}
}
你好,Shubham,谢谢你的回答,它只针对最大值。但是,如果我试图更改最小值,最大值仍然会像最小值一样更改,只要在NumberFormat字段上更改一次。min_值转到嵌套数组,而不是现在只更改索引[key]:[value,prev.sensitiveValues[key]//这导致了问题,在min_值的情况下,将数组分配给第一个索引,因此我将设置状态更改为This=>[key]:[value,prev.sensitiveValues[key][1],[key]:[prev.sensitiveValues[key][0],value]哦,是的,有一只小虫子。不管怎样,你想得很好,你好,Shubham,谢谢你的回答,它只对max_值起作用。但是,如果我试图更改最小值,最大值仍然会像最小值一样更改,只要在NumberFormat字段上更改一次。min_值转到嵌套数组,而不是现在只更改索引[key]:[value,prev.sensitiveValues[key]//这导致了问题,在min_值的情况下,将数组分配给第一个索引,因此我将设置状态更改为This=>[key]:[value,prev.sensitiveValues[key][1],[key]:[prev.sensitiveValues[key][0],value]哦,是的,有一只小虫子。不管怎样,你想得很好
amountInputChangeHandler = (e) => {
let [key,type] = e.target.id.split('-')
//key === TOTAL_ASSETS
//type === min_value or max_value
// We update first value in array for any key
if(type==='min_value'){
console.log('it goes to min_value')
this.setState({
sensitiveValues: {
...this.state.sensitiveValues,
[key]: [parseFloat(e.target.value.replace(/,/g, '')), this.state.sensitiveValues[key][0]]
}
})
}
// We update Second value in array for any key
if(type==='max_value'){
console.log('it goes to min_value')
this.setState({
sensitiveValues: {
...this.state.sensitiveValues,
[key]: [parseFloat(e.target.value.replace(/,/g, '')), this.state.sensitiveValues[key][1]]
}
})
}
}