Javascript 如何在react js中的对象数组中添加对象

Javascript 如何在react js中的对象数组中添加对象,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我是新来的。这里是我尝试过的 onaddRow(e, id) { const addData = this.props.lowData; const tempObj = { id: 'L1', technologyId: 0, technology: '', type: '', numberOfQuestions: '' }

我是新来的。这里是我尝试过的

onaddRow(e, id) {
        const addData = this.props.lowData;
        const tempObj = {
            id: 'L1',
            technologyId: 0,
            technology: '',
            type: '',
            numberOfQuestions: ''
        }
        addData.push(tempObj);
    }
this.props.lowData是一个对象数组。所以,我想在这里添加一个对象


因此,我尝试了以下方法,但它不起作用,有人能建议我怎么做吗?

使用addData.push()可以有效地将对象添加到数组中(如果props.lowData确实是一个对象数组),但是如果您在React环境中,那么您应该在this.setState({lowData:addData})之后执行此操作以触发组件的重新招标。

您还可以使用符号(排列)
更新数组。

onaddRow(e, id) {  
    const tempObj = {
        id: 'L1',
        technologyId: 0,
        technology: '',
        type: '',
        numberOfQuestions: ''
    }
    const addData = [...this.props.lowData, tempObj ];
    console.log(addData)
}
//正如你在评论中所问的那样。若要从数组中删除项,可以执行以下操作

let updatedArrray = yourArray.filter(i => {
  return i.id != passYourIdHere;
});
console.log(updatedArrray);

因此,这里我们将返回除匹配对象之外的所有其他对象,最后在UpdateDarray中收集。

React使用单向数据流(从父对象到子对象)。在您的示例中,您从props中的父级接收数据。若要添加新对象,必须传递来自父对象的回调,这将把它添加到父状态

Child component:
onAddRow(e, id) {  
    const tempObj = {
        id: 'L1',
        technologyId: 0,
        technology: '',
        type: '',
        numberOfQuestions: ''
    }
    this.props.onAddRow(tempObj)
}

Parent:

onAddRow = (newObj) => {
 this.setState({
   lowData: [...this.state.lowData, newObj]
 })
}
render() {

<ChildComponent data={this.state.lowData} onAddRow={this.onAddRow} />

}
子组件:
onAddRow(e,id){
常数tempObj={
id:'L1',
技术ID:0,
技术:'',
类型:“”,
问题数:“”
}
this.props.onAddRow(tempObj)
}
起源:
onAddRow=(newObj)=>{
这是我的国家({
lowData:[…this.state.lowData,newObj]
})
}
render(){
}

您的示例看起来像是要添加到
addData
对象,但在您的问题中,您说要添加到
this.props.lowData
;你想添加到哪个?你确定
this.props.lowData
是一个数组吗?是的,我的意思是相同的。是的,它是一个对象数组。你检查了
OnAddressRow()
是否被正确调用了吗?因为函数体在我看来没问题。嗨,你的答案很完美。谢谢你。如果你没有任何问题,那么你能告诉我,如果使用Id,我现在如何从同一个元素中删除元素我的意思是我知道Id,如果它与Id匹配,那么删除该元素。你理解删除部分吗?是的,我理解