gpt4 book ai didi

javascript - 如何使用reactjs向数组添加多个项目

转载 作者:行者123 更新时间:2023-12-02 22:44:32 25 4
gpt4 key购买 nike

我有两个类。一个持有数组,另一个持有数组 Prop 。这些是我的类(class):

//父类:

constructor() {
super()

this.state = {
items: []
}

this.addItem = this.addItem.bind(this)
}

componentDidMount(){
this.setState({
items: [{
name: 'Sebastian',
num: '001'
},{
name: 'Josh',
num: '002'
}]
})
}

addItem() {
??????
}

render() {
return(
<div>
<MethodA items={this.state.items} addItem={this.addItem}/>
</div>
)
}

//子类别:

function MethodA(props) {
return(
<div>
{props.items.map((item, i) =>{
return(<div key={i}>
<span>{item.name}</span>
<span>{item.num}</span>
</div>)
})}

<button onClick={() => { props.addItem() }}>ADD ITEM</button>
</div>
)
}

当前结果是这样的:

<div>
<span>Sebastian</span>
<span>001</span>
</div>
<div>
<span>Sebastian</span>
<span>002</span>
</div>

然后点击“添加项目”按钮后,这将是新结果:

<div>
<span>Sebastian</span>
<span>001</span>
</div>
<div>
<span>Sebastian</span>
<span>002</span>
</div>
<div>
<span>New Name</span>
<span>New Num</span>
</div>

我不确定在push()或concat()或两者之间是否使用什么以及如何使用。有什么想法吗?

最佳答案

首先,不需要在componentDidMount中设置初始状态,可以直接在构造函数中设置。

constructor(props) {
super(props);

this.state = {
items: [
{
name: "Sebastian",
num: "001"
},
{
name: "Josh",
num: "002"
}
]
};

this.addItem = this.addItem.bind(this);
}

要添加项目,您可以使用 setState 的函数形式,并且需要将该项目传递到子组件的回调中。

addItem(item) {
this.setState(state => ({
items: [...state.items, item]
}));
}

// Child class
function MethodA(props) {
return(
<div>
{props.items.map((item, i) =>{
return(<div key={i}>
<span>{item.name}</span>
<span>{item.num}</span>
</div>)
})}

<button onClick={() => props.addItem(item)}>ADD ITEM</button> // Pass item to the parent's method
</div>
)
}

关于javascript - 如何使用reactjs向数组添加多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com