修复金币用完后重置为10的问题

问题原因:
- coinUtils.js中使用 if (!coins) 判断金币是否存在
- 当金币为0时,0被当作falsy值,导致重新设置为10
- 用户金币用完后会自动重置,无法真正耗尽

解决方案:
- 修改判断条件为 if (coins === null || coins === undefined || coins === '')
- 只有当金币未初始化时才设置为初始值10
- 0金币不会被误判为未初始化状态
- 首次初始化时保存到storage

优化内容:
- 金币不足时提示更友好,引导用户获取金币
- 修复代码缩进格式
- 确保金币消耗逻辑正确
This commit is contained in:
H1d3rOne committed 2026-03-08 22:04:54 +08:00
1 parent a0dc5d4602
commit 1d76df3ead
1 file changed
+14 -7
+14 -7
View File
@@ -7,8 +7,12 @@ const checkCoinsAndConsume = () => {
}
let coins = uni.getStorageSync('userCoins')
if (!coins) coins = 10
else coins = parseInt(coins)
if (coins === null || coins === undefined || coins === '') {
coins = 10
uni.setStorageSync('userCoins', coins)
} else {
coins = parseInt(coins)
}
if (coins < 1) {
uni.showModal({
@@ -18,10 +22,10 @@ const checkCoinsAndConsume = () => {
cancelText: '取消',
success: (res) => {
if (res.confirm) {
uni.navigateTo({ url: '/pages/mine/coins' })
uni.navigateTo({ url: '/pages/mine/coins' })
}
}
}
})
})
return { canUse: false, needCoins: true }
}
@@ -35,8 +39,11 @@ const consumeCoin = async () => {
}
let coins = uni.getStorageSync('userCoins')
if (!coins) coins = 10
else coins = parseInt(coins)
if (coins === null || coins === undefined || coins === '') {
coins = 10
} else {
coins = parseInt(coins)
}
coins -= 1
uni.setStorageSync('userCoins', coins)