gpt4 book ai didi

javascript - 大家好,如何增加数组对象中存储的状态值

转载 作者:行者123 更新时间:2023-11-28 16:59:59 25 4
gpt4 key购买 nike

我在增加我的状态的一部分时遇到问题。我遇到的问题是访问或瞄准我想要增加的特定值,即可爱。我是 react 新手,并添加了与问题相关的主要代码

class App extends React.Component {
state = {
cats: [
{
name: 'felix',
cuteness: 0,
img:
'https://....jpg
}]
}

handleCuteness = inc_cuteness => {
const { cuteness } = this.state.cats;
this.setState({ cuteness: cuteness + inc_cuteness });
};

<button
className="btn btn-success"
onClick={() => handleCuteness(1)}
value={cuteness}
>
Cuteness
<span className="badge badge-light m-2">
{cuteness}
</span>
</button

最佳答案

由于您正在处理对象数组,为了更新正确的猫,您需要识别正确的对象。您应该给每个猫对象一个唯一的标识符。这样可以更轻松地找到您想要更新的特定猫。

更新您的 handleCuteness 事件处理程序以接受 cat-id 作为参数。这将帮助我们找到要在数组中更新的正确猫。为您的标记设置 onClick 处理程序时,您可以传递属于每只猫的完全相同的 cat-id。

class App extends React.Component{
state = {
cats: [
{id: 1, name: "felix", cuteness: 0, img: "blah"},
{id: 2, name: "samuel", cuteness: 0, img: "blah2"}
]
}

handleCuteness = (catId) => {
const catsCopy = [...this.state.cats]

let foundCat = catsCopy.find(cat => cat.id == catId)
foundCat.cuteness = foundCat.cuteness + 1

this.setState({
cats: catsCopy
})
}

createCats = () => {
const { cats } = this.state
return cats.map((cat) => {
return(
<div>
<img src={cat.img}/>
<button
className="btn btn-success"
onClick={() => this.handleCuteness(cat.id)}
>
Cuteness
<span className="badge badge-light m-2">
{cuteness}
</span>
</button>
</div>
)
})
}

render(){
return(
<div>{this.createCats()}</div>
)
}
}

关于javascript - 大家好,如何增加数组对象中存储的状态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794566/

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