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

标签 javascript reactjs

我在增加我的状态的一部分时遇到问题。我遇到的问题是访问或瞄准我想要增加的特定值,即可爱。我是 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/

相关文章:

javascript - 需要帮助让 Zapier 脚本示例在 JSFiddle 中工作

node.js - 使用 axios 发布请求时出现网络错误

reactjs - 实体中的 Redux UI 状态

reactjs - Material UI 的 Tooltip - 自定义风格

reactjs - 如何等待一个 Action 完成?

javascript - 如何将 jQuery DOM 对象附加到另一个对象

javascript - 如何从图像输入中获取 xy 坐标?

wordpress - Gatsby GraphQL + WordPress 中不存在该字段(但在本地有效)

javascript - 我在尝试从 Html 文本字段获取 img.src 时遇到错误

javascript - 如何在单击按钮时删除 Antd 选择/多选组件中的选定值