useState 更新对象内多个变量的实例变量

发布于 2025-01-19 09:18:05 字数 439 浏览 0 评论 0原文

const [emoji, setEmoji] = useState({
like: 0,
love: 0,
laugh: 0,
sad: 0,
wow: 0,
angry: 0,

})


const emojiCount = () => {

  isReacted 
  ? 
  setEmoji(emoji => ({...emoji, laugh: emoji.laugh+1}))
  :
  setEmoji(emoji => ({...emoji, laugh: emoji.laugh-1}))
  setIsReacted(!isReacted)

  }
  • isReacted 只是一个布尔状态!

我想要实现的是使用函数“emojiCount”处理整个状态,我想知道我是否能够将“笑”作为动态变量传递,其中可以是“爱”或“喜欢”等。

const [emoji, setEmoji] = useState({
like: 0,
love: 0,
laugh: 0,
sad: 0,
wow: 0,
angry: 0,

})


const emojiCount = () => {

  isReacted 
  ? 
  setEmoji(emoji => ({...emoji, laugh: emoji.laugh+1}))
  :
  setEmoji(emoji => ({...emoji, laugh: emoji.laugh-1}))
  setIsReacted(!isReacted)

  }
  • isReacted is just a boolean state!

What I am trying to implement is to handle the whole state with the function "emojiCount", I want to know if I am capable of passing "laugh" as a dynamic variable where it can be "love" or "like" etc..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦醒灬来后我 2025-01-26 09:18:05

我认为你想要做的是动态传递对象键,你可以这样做:

const [emoji, setEmoji] = useState({
  like: 0,
  love: 0,
  laugh: 0,
  sad: 0,
  wow: 0,
  angry: 0,
});


const emojiCount = (emojiIcon) => {
  setEmoji({
    ...emoji,
    [emojiIcon]: emoji[emojiIcon] + 1,
  });
}

因此,如果你调用像 emojiCount("laugh") 这样的函数,它将更新笑键,增加笑声值减 1。

这是一个带有更新表情符号的动态按钮的沙箱:
https://codesandbox.io/s/adoring-benz -2zeyzh?file=/src/App.js

I think what you want to do is pass the object key dynamically, you can do that like this:

const [emoji, setEmoji] = useState({
  like: 0,
  love: 0,
  laugh: 0,
  sad: 0,
  wow: 0,
  angry: 0,
});


const emojiCount = (emojiIcon) => {
  setEmoji({
    ...emoji,
    [emojiIcon]: emoji[emojiIcon] + 1,
  });
}

So if you call the function like emojiCount("laugh") it will update the laugh key incrementing the laugh value by 1.

Here's a sandbox with dynamic buttons that update the emoji:
https://codesandbox.io/s/adoring-benz-2zeyzh?file=/src/App.js

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文