首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >增加自定义对象的点击次数

增加自定义对象的点击次数
EN

Stack Overflow用户
提问于 2018-12-06 08:34:44
回答 2查看 96关注 0票数 0

我正在使用React中的自定义库,您可以在其中添加表情符号,我正在尝试为对象创建一个计数器变量,每当用户单击它时,这个变量就会增加。

关键是要把它变成一个数组,由几个表情符号组成,但到目前为止,我只想让它只使用一个。

所以我有一个条件,应该给我看一下表情符号。

代码语言:javascript
运行
复制
{
  this.state.showEmoji &&
    <div className="emoji">
      <Emoji 
        onClick={this.increment}
        emoji={{ id: this.state.emoji.id, skin: 1, }}
        size={25}
      />
      <p>{this.state.emoji.count}</p>
    </div>
}

在里面,我呈现我的Emoji和计数器,它决定了表情符号被渲染/点击了多少次。

我不确定我是应该创建一个匿名函数还是一个处理程序,我与处理程序一起进行了尝试

在我的状态下,我做了一个定制的表情符号对象(它最终将是一个表情符号对象的数组)。

代码语言:javascript
运行
复制
emoji: {
  id: '',
  count: 0,
}

连同我的增量处理程序方法:

代码语言:javascript
运行
复制
increment = (emoji) =>{
  console.log(emoji.id);
  console.log(this.state.emoji.id);
  this.setState({
   count: this.state.emoji[emoji.id].count++
  });
}

我成功地记录了表情符号对象的状态id,然后传入了表情符号对象,它们匹配。

但是,当我试图改变状态时,我会得到这样的错误:

代码语言:javascript
运行
复制
TypeError: Cannot read property 'count' of undefined

在这种情况下,我为什么不能使用id访问对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-06 08:50:49

代码语言:javascript
运行
复制
increment = (emoji) =>{
 const { emoji } = this.state; // isn't that more readable?
 const _emoji = {
   ...emoji,
   count: emoji.count + 1
 } //this will create a copy of your emoji object.
   // use +1 instead of ++ to make sure you are keeping the original count value as it is, 'PURE PROGRAMMING'
 this.setState({ emoji: _emoji });
}
票数 2
EN

Stack Overflow用户

发布于 2018-12-06 09:45:14

请看一下这个沙箱代码,它可能也有助于管理表情符号数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53647431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档