只在React组件的状态更新时运行一次的代码
P粉340980243
2023-09-01 21:08:59
<p>我在我的游戏项目中有一个名为index.tsx的react组件,它具有更新状态的变量,假设每当用户余额发生变化时,组件都会刷新。</p><p>
我正在创建一个“净头寸”功能,即在开始游戏时将用户余额保存为参考值,然后只应从该参考值中进行每笔交易的加减。</p><p>
假设用户在开始时的余额为$5000(在footerBalance变量中),那么净头寸标签将显示该值为0(在netPositionBalance变量中),以$5000作为基准。现在用户在下一次游戏中赢得$100,他的余额将变为$5100(在footerBalance变量中),净头寸将变为$100(在netPositionBalance变量中)。</p><p>
现在的情况是,一旦余额更新,我的净头寸金额也会更新,因为它在同一个组件文件中,净头寸变为0。</p><p>我希望在开始时修复这个问题,并且这段特定的代码不应该重新渲染,无论组件如何刷新。</p><p></p>
<p>获取余额的代码块如下:</p>
<pre class="brush:php;toolbar:false;">const footerBalance = useAppSelector(state => state.app.footerUnformattedBalance); //这会改变余额,即它将给出$5000,在赢得$100后,它将变为$5100</pre>
<p>我需要一个名为footerBalanceAtStart的变量,以便我可以从起始点显示净头寸(在变量netPositionBalance中),类似于以下内容:</p>
<pre class="brush:php;toolbar:false;">let netPositionBalance = Number(footerBalanceAtStart) - Number(footerBalance); //在游戏过程中,它应该更新为$100</pre>
<p>我希望“footerBalanceAtStart”被定义为只获取一次余额,然后在整个项目的持续时间内保持不变。</p>
所以我找到了答案。显然我也可以在这里使用useEffect,像这样:
现在它只会存储一次值,并且不会在没有状态更新函数setAny()的情况下自动更改