Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
Javascript React Native set state对象数组的元素_Javascript_Arrays_Reactjs_React Native_Ecmascript 6 - Fatal编程技术网

Javascript React Native set state对象数组的元素

Javascript React Native set state对象数组的元素,javascript,arrays,reactjs,react-native,ecmascript-6,Javascript,Arrays,Reactjs,React Native,Ecmascript 6,我的状态中有一个数组: this.state = { data: [ { quantity: 0 } ], tempQuantity: 0 }; 我想更新文本输入中的数据[0]。数量,因此我使用: onChangeText={tempQuantity => this.setState({ tempQuantity, data: [...this.state.data, { quantity: tempQuantity }]

我的状态中有一个数组:

this.state = {
  data: [
    {
      quantity: 0
    }
  ],
  tempQuantity: 0
};
我想更新
文本输入中的
数据[0]。数量
,因此我使用:

onChangeText={tempQuantity =>
  this.setState({
    tempQuantity,
    data: [...this.state.data, { quantity: tempQuantity }]
  })
}
我有一个
来显示结果:

<View>
  <Text>{this.state.data[0].quantity}</Text>
</View>

{this.state.data[0].quantity}
但我每次都得到
0

  • 如何更新数组中每个对象的每个元素

  • 如果我这样使用它,它会动态工作吗?我的意思是每次按下
    ,我都想创建一个对象(包含主对象的所有属性)。[例如:
    数据[0]
    数量为10-
    数据[1]数量为12-和…]


  • 您必须先修改
    数据
    数组,然后再将其设置为状态。您可以通过以下方式执行此操作:

    假设您有一个包含以下项的数组:

    var data = [
    {name: 'a', age: 12},
    {name: 'b', age: 15}
    ]
    
    在再次设置为状态之前,您需要按照以下方式对其进行修改:

    var newData = data.map((item) => {
    return {...item, age: 20}
    })
    
    现在,您的
    新数据将

    var newData = [
    {name: 'a', age: 20},
    {name: 'b', age: 20}
    ]
    

    新数据
    可以分配给
    状态

    您必须修改
    数据
    数组,然后才能将其设置为状态。您可以通过以下方式执行此操作:

    假设您有一个包含以下项的数组:

    var data = [
    {name: 'a', age: 12},
    {name: 'b', age: 15}
    ]
    
    在再次设置为状态之前,您需要按照以下方式对其进行修改:

    var newData = data.map((item) => {
    return {...item, age: 20}
    })
    
    现在,您的
    新数据将

    var newData = [
    {name: 'a', age: 20},
    {name: 'b', age: 20}
    ]
    

    新数据
    可以分配给
    状态

    要对数组中的每个元素使用单个事件处理程序,您可以传入
    索引
    以及
    事件
    ,并更新该特定索引上元素的
    数量

    示例

    类应用程序扩展了React.Component{
    状态={
    数据:[
    {
    数量:0
    },
    {
    数量:10
    },
    {
    数量:100
    }
    ]
    };
    handleChange=(事件、索引)=>{
    const{value}=event.target;
    this.setState(previousState=>{
    const data=[…previousState.data];
    数据[索引]={…数据[索引],数量:值};
    返回{data};
    });
    };
    render(){
    返回(
    {this.state.data.map((元素,索引)=>(
    this.handleChange(事件,索引)}
    />
    ))}
    );
    }
    }
    render(,document.getElementById(“根”))
    
    要对数组中的每个元素使用单个事件处理程序,可以传入
    索引和
    事件,并更新该特定索引中元素的
    数量

    示例

    类应用程序扩展了React.Component{
    状态={
    数据:[
    {
    数量:0
    },
    {
    数量:10
    },
    {
    数量:100
    }
    ]
    };
    handleChange=(事件、索引)=>{
    const{value}=event.target;
    this.setState(previousState=>{
    const data=[…previousState.data];
    数据[索引]={…数据[索引],数量:值};
    返回{data};
    });
    };
    render(){
    返回(
    {this.state.data.map((元素,索引)=>(
    this.handleChange(事件,索引)}
    />
    ))}
    );
    }
    }
    render(,document.getElementById(“根”))
    
    
    

    您正在为每个
    onChangeText
    上的
    数据添加一个新对象。
    如果在
    数据
    数组中只有一个对象,那么您正在向数组添加一个新对象,那么为什么不将其作为单独的属性添加到状态中,而不是在数据数组中添加一个对象。@Thole那么我如何才能以正确的方式执行此操作?@Sandip it's简化-我有大约15个properties@MohamadKh75您可以在这里查看我的答案吗?您正在为每个
    onChangeText
    上的
    data
    添加一个新对象。如果
    data
    数组中只有一个对象,那么为什么不将其作为单独属性添加到状态中,而不是添加到数组中数据数组。@Thole那么我怎样才能用正确的方式来做呢?@Sandip它很简单-我有大约15个properties@MohamadKh75你能在这里核对我的答案吗?这是问题1的答案?那么,如何将新对象添加到数组中呢?我希望这是动态的。。。(问题2)我想编辑对象[x]的年龄,而不是将其全部更改为20岁@MohamadKh75如果要更新对象[x],则需要直接在该索引处更新它。像
    object[x].age=newValue
    @MohamadKh75,因为你的问题
    那么我如何才能将新对象添加到我的数组中?
    无论你做什么都可以,它都会将新对象添加到现有的状态数组中。这是问题1的答案?那么,如何将新对象添加到数组中呢?我希望这是动态的。。。(问题2)我想编辑对象[x]的年龄,而不是将其全部更改为20岁@MohamadKh75如果要更新对象[x],则需要直接在该索引处更新它。像
    object[x].age=newValue
    @MohamadKh75对于你的问题
    那么我如何才能将新对象添加到我的数组中?
    无论你做什么都可以,它都会将新对象添加到现有的状态数组中。