Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ReactJs bug更新对象中的数组索引_Reactjs_Setstate - Fatal编程技术网

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]] 
                        }
                })
        } 
}