0

我已经有一段时间没有处理过纯粹基于状态的项目了,这是我个人的一个有趣的事情(我们在工作中使用类似 Redux 和持久性,所以全局状态访问更多是由道具驱动的) . 我将嵌套的三元组放入 setState 钩子(setAvailableCharacters)中,但我不是粉丝?有没有更好的方法可以做到这一点?

  function levelCharacterUp(forceLevel = false) {
    setAvailableCharacters(prevState => (
        merge({}, availableCharacters, {
          [selectedClassKey]: {
            level: forceLevel ? forceLevel : prevState[selectedClassKey].level + 1 <= MAX_CHARACTER_LEVEL ? prevState[selectedClassKey].level + 1 : MAX_CHARACTER_LEVEL
          }
        })
      )
    );
  }

似乎没有一种更清洁的方法可以做到这一点,同时也尊重prevState链接到新状态。

也试图保持这纯粹是一个功能组件。

4

1 回答 1

0

这可以工作:

  function levelCharacterUp(forceLevel = false) {
setAvailableCharacters(prevState => (
    merge({}, availableCharacters, {
      [selectedClassKey]: {
        level: forceLevel ? forceLevel : Math.min(prevState[selectedClassKey].level + 1, MAX_CHARACTER_LEVEL)
      }
    })
  )
);


 }
于 2020-11-24T08:46:20.150 回答