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对于你的问题那么我如何才能将新对象添加到我的数组中?
无论你做什么都可以,它都会将新对象添加到现有的状态数组中。