React Native 同时修改同一个状态

Posted

技术标签:

【中文标题】React Native 同时修改同一个状态【英文标题】:React native modifying the same state at the same time 【发布时间】:2021-03-21 21:37:38 【问题描述】:

我刚刚开始学习一些 react native,我正在尝试制作一个简单的 cookie clicker 应用程序。 当我点击我的 cookie 时,cookiecount 增加 1,但我希望 cookie 计数也每秒增加 1。当我经常点击 cookie 并且 cookiecount 翻转并跳转到不同的数字并再次返回时,我认为这与我同时更新 cookiecount 状态 2 次有关?

export default function App(props) 
  /* Make the state that holds the amount of cookies */
  const [cookieCount, modifyCookieCount] = useState(0)
  const [costCount, modifyCostCount] = useState(10)
  const [perClickBoost, setBoost] = useState(1)
  const interval = setInterval(() => modifyCookieCount(cookieCount+1), 1000);

function addPurchase(count)
    modifyCookieCount(cookieCount-count)
    modifyCostCount(costCount+10);
    setBoost(perClickBoost+1)
  
  
  return (
    <View style=styles.container>
      <Text>cookieCount</Text>
      /* TouchableOpacity is needed to make use of Onpress prop */ 
      <TouchableOpacity onPress = addCookie>
        <Image style=styles.image source=require('./images/cookie.png')/>
      </TouchableOpacity>
        <Purchasables addPurchase=addPurchase count=cookieCount title='Koekjesslaaf' cost=costCount/>
      <StatusBar style="auto" />
    </View>
  );

  function addCookie()
    /* Add a cookie */
    modifyCookieCount(cookieCount+perClickBoost)
  

  


问题源于这两个更新:

  const interval = setInterval(() => modifyCookieCount(cookieCount+1), 1000);

  function addCookie()
    /* Add a cookie */
    modifyCookieCount(cookieCount+perClickBoost)
  

我希望有人可以帮助我解决这个问题,如果我的代码没有意义,我很抱歉,我刚刚开始学习。

【问题讨论】:

【参考方案1】:

我的建议你可以拆分为 2 个变量来计数 cookie。

const [cookieAutoCount, modifyCookieAutoCount] = useState(0)
const [cookieTouchCount, modifyCookieTouchCount] = useState(0)

你需要做的是检查cookieAutoCount + cookieTouchCount &gt; limit是否重置了这两个值 每次自动创建和触摸创建时检查两种情况

【讨论】:

以上是关于React Native 同时修改同一个状态的主要内容,如果未能解决你的问题,请参考以下文章

在 react-native-reanimated 中继续循环动画

如何在 React Native 中设置 iOS 状态栏背景颜色?

当设备在 react-native 中离线时,在 webview 中显示本地图像

react-native 横竖屏控制及状态变化监听

React-Native 获取设备当前网络状态 NetInfo

React Native刷新屏幕/组件/更改状态